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