记录在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做处理。