iOS11踩坑記錄

大不不發表於2017-12-19

記錄在iOS 11上遇到的一些問題~

坑1

-(void)layoutSubviews{
      /*此方法在iOS11上引入了新的機制,在執行動畫時,會呼叫此方法重新整理UI;
        所以如果在此方法中定義了View的frame的話,會引起問題
      */
}
複製程式碼

iOS10.3.3下,一個View從建立--->執行show動畫--->隱藏

螢幕快照 2017-09-30 下午5.42.25.png

iOS 11下,一個View從建立--->執行show動畫--->隱藏

螢幕快照 2017-09-30 下午5.41.35.png

iOS10.3.3執行動畫不會呼叫layoutSubviews方法,而在iOS 11下,當執行動畫時,會多次呼叫layoutSubviews此方法。

//這是view的展示動畫,在iOS 11上沒有效果,研究了很久,最後發現是因為我在`layoutSubviews`初始化的view的frame.
[UIView animateWithDuration:animation?AnimationDelay:0 animations:^{
        _topView.frame = CGRectMake(0, -TopViewHeight, ViewSize(self).width, TopViewHeight);
         _bottomView.frame = CGRectMake(0, ViewSize(self).height, ViewSize(self).width,BottomViewHeight);
    } completion:^(BOOL finished) {
        self.hidden = YES;
    }];
複製程式碼

坑一結論

如果你習慣在layoutSubviews此方法裡定義viewframe,可能要針對iOS11做處理。

相關文章