iOS13 变化小记

2019-11-01  本文已影响0人  无东东

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遮挡,保留间隔效果。

上一篇 下一篇

猜你喜欢

热点阅读