https://github.com/scalessec/Toast
优势:
跟Android的方法一致,很棒(因为Toast也是Android的系统控件)
使用
// basic usage
[self.view makeToast:@"This is a piece of toast."];
// toast with a specific duration and position
[self.view makeToast:@"This is a piece of toast with a specific duration and position."
duration:3.0
position:CSToastPositionTop];
// toast with all possible options
[self.view makeToast:@"This is a piece of toast with a title & image"
duration:3.0
position:[NSValue valueWithCGPoint:CGPointMake(110, 110)]
title:@"Toast Title"
image:[UIImage imageNamed:@"toast.png"]
style:nil
completion:^(BOOL didTap) {
if (didTap) {
NSLog(@"completion from tap");
} else {
NSLog(@"completion without tap");
}
}];
// display toast with an activity spinner
[self.view makeToastActivity:CSToastPositionCenter];
// display any view as toast
[self.view showToast:myView];
实现
就是一个wrapperView,里面放(算出文本的宽高)label,与图片。
CSToastManager单例,设置一些默认值
然后就是UIView (Toast) 扩展实现了。
问题:
self.view 最适合用哪个控件封装? 有键盘弹出的情况,toast在键盘下看不见。
解决:
一直更新迭代,最终[[UIApplication sharedApplication].delegate window]; 封装self.view。
键盘弹出情况,iOS15以前是有根据检测到UIRemoteKeyboardWindow层级(一直验证才找到的,不是api),在这层级上显示toast。iOS15发现已经没UIRemoteKeyboardWindow层级,所以一劳永逸直接让toast 居中显示。
网友评论