QMUIToastView
@interface QMUIToastView : UIView
QMUIToastView
是一个用来显示toast的控件,其主要结构包括:backgroundView
、contentView
,这两个view都是通过外部赋值获取,默认使用QMUIToastBackgroundView
和QMUIToastContentView
。
拓展性:QMUIToastBackgroundView
和QMUIToastContentView
是QMUI提供的默认的view,这两个view都可以通过appearance来修改样式,如果这两个view满足不了需求,那么也可以通过新建自定义的view来代替这两个view。另外,QMUI也提供了默认的toastAnimator来实现ToastView的显示和隐藏动画,如果需要重新定义一套动画,可以继承QMUIToastAnimator
并且实现QMUIToastAnimatorDelegate
中的协议就可以自定义自己的一套动画。
样式自定义:建议通过 tintColor 统一修改整个 toastView 的内容样式。当然你也可以单独修改 contentView.tintColor。默认情况下 QMUIToastView.tintColor = UIColorWhite。
建议使用QMUIToastView
的时候,再封装一层,具体可以参考QMUITips
这个类。
See
QMUIToastBackgroundViewSee
QMUIToastContentViewSee
QMUIToastAnimatorSee
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] 的方式显示 tipsDeclaration
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 }
- 承载Toast内容的UIView,可以自定义并赋值给contentView。如果contentView需要跟随ToastView的tintColor变化而变化,可以重写自定义view的
-
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 }
-
工具方法。隐藏
view
里面的所有 ToastViewDeclaration
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
里面最顶部的 ToastViewDeclaration
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
里面所有的 ToastViewDeclaration
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