1. ScrollView滚动条(ScrollIndicator)在圆角屏幕下方位置不正确
【最新的13版本应该已经修复了这个bug】
iOS13以前,UIScrollView设置了contentInsetAdjustmentBehavior之后,会自动在底部增加圆角的富余量,同时滚动条(ScrollIndicator)底部也会定位到圆角之上的位置。在iOS13之后,滚动条位置有时候不正确。
解决方法:iOS13中UIScrollView增加了属性automaticallyAdjustsScrollIndicatorInsets,默认true,意思应该是控制是否实现上述功能,但是有时不起作用,滚动条下端超出了圆角,而手动设置ScrollIndicatorInsets之后反而又起了作用,在手动设置的insets基础上又有增加,导致滚动条又离圆角过远。
需要特殊调整关闭iOS13的滚动条自适应改为手动设置:
override func viewDidLoad() {
super.viewDidLoad()
...
//适应圆角屏幕下方安全区
if #available(iOS11.0, *) {
//self.automaticallyAdjustsScrollViewInsets = true
tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentBehavior.always
}
//ios13滚动条处理
if #available(iOS13.0, *) {
tableView.automaticallyAdjustsScrollIndicatorInsets = false
}
}
//圆角屏幕下上拉刷新位置调整,滚动条位置调整
override func viewSafeAreaInsetsDidChange() {
if #available(iOS11.0, *) {
super.viewSafeAreaInsetsDidChange()
tableView.mj_footer.ignoredScrollViewContentInsetBottom = self.view.safeAreaInsets.bottom
}
if #available(iOS13.0, *) {
tableView.verticalScrollIndicatorInsets = UIEdgeInsetsMake(0, 0, self.view.safeAreaInsets.bottom, 0)
}
}
2. TableView中cell选择效果实现的变化
在iOS13之前,cell设置了选择样式,在点击时会把cell中的所有subView背景颜色设置clear,再变化cell的背景色不会被其他view遮挡。
而iOS13之后,不再对cell的subView进行处理,只改变cell自身的backgroundColor,内部的subView会挡住cell的点击效果,如果需要点击效果,则要尽量使用透明的subView。
如果要实现具有间隔的cell效果,以前可以在xib中cell增加subView与cell留出空隙,设为白色,cell设置为clearColor。在iOS13之后,subView不会在点击时被clearColor,所以会挡住变化效果。现在可以改为让subView为clearColor,再在空隙出增加底色的view,让cell为白色。这样点击时会改变cell的背景色,subView也不会遮挡,而空隙处有背景色view遮挡,保留间隔效果。
网友评论