UI

iOS 13 UITableView ContentView

2020-07-17  本文已影响0人  天空中的球

iOS 13 后 某个 ViewController 在跳转 的时候 cell 突然变小了下,虽说时间很短,但还是想解决下,经过查找在那一瞬间是发现 UITableView ContentView 变化了, 哦,iOS 12 之前没有这个变化。

具体呈现 0.5 秒

当然这个操作出现前,是有执行了下横竖屏的切换。

interfaceOrientation

通过 InterfaceOrientation 属性的描述,知道此处的改变确实会影响布局的显示。说白了就是旋转Screen会触发UIView 的 layoutSubviews 调用。

然后神奇的事情发生了, 我在该 Cell 中的 layoutSubviews 打印了下 self.contentView,它的宽度就不变化了。

- (void)layoutSubviews {
    NSLog(@"%@",self.contentView);
}

说明我们手动调用了下,self.contentView 就保持不动了。

- (void)layoutSubviews {
    // iOS 13 之后横竖屏切换的时候 self.contentView 会变化,有一个体验不好的效果
    if (self.contentView.origin.x > 0 || self.contentView.frame.size.width < kDDScreenPortraitWidth) {
        self.contentView.frame = CGRectMake(0, self.contentView.origin.y, kDDScreenPortraitWidth, self.contentView.size.height);
    }
}

后面发现特殊情况下,x 和 width 会有变化,所以还是强制改动下。

具体解释暂时不知道, 但确实有效,毕竟 iOS 12 之前没有这个问题,可能是 苹果在 iOS 13 之后对 UIContentView 做了些未知的改变。

PS: iOS 13 以后已知的 contentView 的改变:
上一篇下一篇

猜你喜欢

热点阅读