記錄在iOS 11上遇到的一些問題~
坑1
-(void)layoutSubviews{
/*此方法在iOS11上引入了新的機制,在執行動畫時,會呼叫此方法重新整理UI;
所以如果在此方法中定義了View的frame的話,會引起問題
*/
}
複製程式碼
iOS10.3.3下,一個View從建立--->執行show動畫--->隱藏
iOS 11下,一個View從建立--->執行show動畫--->隱藏
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
此方法裡定義view
的frame
,可能要針對iOS11做處理。