QMUIToastView

@interface QMUIToastView : UIView

QMUIToastView是一个用来显示toast的控件,其主要结构包括:backgroundViewcontentView,这两个view都是通过外部赋值获取,默认使用QMUIToastBackgroundViewQMUIToastContentView

拓展性:QMUIToastBackgroundViewQMUIToastContentView是QMUI提供的默认的view,这两个view都可以通过appearance来修改样式,如果这两个view满足不了需求,那么也可以通过新建自定义的view来代替这两个view。另外,QMUI也提供了默认的toastAnimator来实现ToastView的显示和隐藏动画,如果需要重新定义一套动画,可以继承QMUIToastAnimator并且实现QMUIToastAnimatorDelegate中的协议就可以自定义自己的一套动画。

样式自定义:建议通过 tintColor 统一修改整个 toastView 的内容样式。当然你也可以单独修改 contentView.tintColor。默认情况下 QMUIToastView.tintColor = UIColorWhite。

建议使用QMUIToastView的时候,再封装一层,具体可以参考QMUITips这个类。

See

QMUIToastBackgroundView

See

QMUIToastContentView

See

QMUIToastAnimator

See

QMUITips
  • 生成一个ToastView的唯一初始化方法,view的bound将会作为ToastView默认frame。

    Declaration

    Objective-C

    - (nonnull instancetype)initWithView:(nonnull UIView *)view;

    Swift

    init(view: UIView)

    Parameters

    view

    ToastView的superView。

  • parentView是ToastView初始化的时候传进去的那个view。

    Declaration

    Objective-C

    @property (nonatomic, weak, readonly) UIView *_Nullable parentView;

    Swift

    weak var parentView: UIView? { get }
  • 显示ToastView。

    See

    toastAnimator

    Declaration

    Objective-C

    - (void)showAnimated:(BOOL)animated;

    Swift

    func show(animated: Bool)

    Parameters

    animated

    是否需要通过动画显示。

  • 隐藏ToastView。

    See

    toastAnimator

    Declaration

    Objective-C

    - (void)hideAnimated:(BOOL)animated;

    Swift

    func hide(animated: Bool)

    Parameters

    animated

    是否需要通过动画隐藏。

  • delay时间后隐藏ToastView。

    See

    toastAnimator

    Declaration

    Objective-C

    - (void)hideAnimated:(BOOL)animated afterDelay:(NSTimeInterval)delay;

    Swift

    func hide(animated: Bool, afterDelay delay: TimeInterval)

    Parameters

    animated

    是否需要通过动画隐藏。

    delay

    多少秒后隐藏。

  • Warning

    如果使用 [QMUITips showXxx] 系列快捷方法来显示 tips,willShowBlock 将会在 show 之后才被设置,最终并不会被调用。这种场景建议自己在调用 [QMUITips showXxx] 之前执行一段代码,或者不要使用 [QMUITips showXxx] 的方式显示 tips

    Declaration

    Objective-C

    @property (nonatomic, copy, nullable) void (^)(UIView *_Nonnull, BOOL) willShowBlock;

    Swift

    var willShowBlock: ((UIView, Bool) -> Void)? { get set }
  • Undocumented

    Declaration

    Objective-C

    @property(nullable, nonatomic, copy) void (^didShowBlock

    Swift

    var didShowBlock: ((UIView, Bool) -> Void)? { get set }
  • Undocumented

    Declaration

    Objective-C

    @property(nullable, nonatomic, copy) void (^willHideBlock

    Swift

    var willHideBlock: ((UIView, Bool) -> Void)? { get set }
  • Undocumented

    Declaration

    Objective-C

    @property(nullable, nonatomic, copy) void (^didHideBlock

    Swift

    var didHideBlock: ((UIView, Bool) -> Void)? { get set }
  • QMUIToastAnimator可以让你通过实现一些协议来自定义ToastView显示和隐藏的动画。你可以继承QMUIToastAnimator,然后实现QMUIToastAnimatorDelegate中的方法,即可实现自定义的动画。如果不赋值,则会使用QMUIToastAnimator中的默认动画。

    Declaration

    Objective-C

    @property (nonatomic, strong, nullable) QMUIToastAnimator *toastAnimator;

    Swift

    var toastAnimator: QMUIToastAnimator? { get set }
  • 决定QMUIToastView的位置,目前有上中下三个位置,默认值是center。

    如果设置了top或者bottom,那么ToastView的布局规则是:顶部从marginInsets.top开始往下布局(QMUIToastViewPositionTop) 和 底部从marginInsets.bottom开始往上布局(QMUIToastViewPositionBottom)。

    Declaration

    Objective-C

    @property (nonatomic) QMUIToastViewPosition toastPosition;

    Swift

    var toastPosition: QMUIToastViewPosition { get set }
  • 是否在ToastView隐藏的时候顺便把它从superView移除,默认为NO。

    Declaration

    Objective-C

    @property (nonatomic) BOOL removeFromSuperViewWhenHide;

    Swift

    var removeFromSuperViewWhenHide: Bool { get set }
  • 会盖住整个superView,防止手指可以点击到ToastView下面的内容,默认透明。

    Declaration

    Objective-C

    @property (nonatomic, strong, readonly) UIView *_Nonnull maskView;

    Swift

    var mask: UIView { get }
  • s

    • 承载Toast内容的UIView,可以自定义并赋值给contentView。如果contentView需要跟随ToastView的tintColor变化而变化,可以重写自定义view的tintColorDidChange来实现。默认使用QMUIToastContentView实现。

    Declaration

    Objective-C

    @property (nonatomic, strong) __kindof UIView *_Nonnull contentView;

    Swift

    var contentView: UIView { get set }
  • contentView下面的黑色背景UIView,默认使用QMUIToastBackgroundView实现,可以通过QMUIToastBackgroundView的 cornerRadius 和 styleColor 来修改圆角和背景色。

    Declaration

    Objective-C

    @property (nonatomic, strong) __kindof UIView *_Nonnull backgroundView;

    Swift

    var backgroundView: UIView { get set }
  • 上下左右的偏移值。

    Declaration

    Objective-C

    @property (nonatomic) CGPoint offset;

    Swift

    var offset: CGPoint { get set }
  • ToastView 距离 parentView 去除 safeAreaInsets 后的区域的上下左右间距。

    例如当 marginInsets.top = 0 且 toastPosition 为 QMUIToastViewPositionTop 时,如果 parentView 是 viewController.view,则 tips 顶边缘将会紧贴 navigationBar 的底边缘。而如果 parentView 是 navigationController.view,则 tips 顶边缘将会紧贴 statusBar 的底边缘。

    Declaration

    Objective-C

    @property (nonatomic) UIEdgeInsets marginInsets;

    Swift

    var marginInsets: UIEdgeInsets { get set }

ToastTool

  • 工具方法。隐藏view里面的所有 ToastView

    Declaration

    Objective-C

    + (BOOL)hideAllToastInView:(UIView *_Nullable)view animated:(BOOL)animated;

    Swift

    class func hideAllToast(in view: UIView?, animated: Bool) -> Bool

    Parameters

    view

    即将隐藏的 ToastView 的 superView,如果 view = nil 则移除所有内存中的 ToastView

    animated

    是否需要通过动画隐藏。

    Return Value

    如果成功隐藏一个 ToastView 则返回 YES,失败则 NO

  • 工具方法。返回view里面最顶部的 ToastView

    Declaration

    Objective-C

    + (nullable __kindof UIView *)toastInView:(nonnull UIView *)view;

    Swift

    class func toast(in view: UIView) -> UIView?

    Parameters

    view

    ToastView 的 superView

    Return Value

    返回一个 QMUIToastView 的实例

  • 工具方法。返回view里面所有的 ToastView

    Declaration

    Objective-C

    + (nullable NSArray<QMUIToastView *> *)allToastInView:(nonnull UIView *)view;

    Swift

    class func allToast(in view: UIView) -> [QMUIToastView]?

    Parameters

    view

    ToastView 的 superView

    Return Value

    包含所有 view 里面的所有 QMUIToastView,如果 view = nil 则返回所有内存中的 ToastView