【发布时间】:2017-12-20 11:35:50
【问题描述】:
自 IOS 11.2 发布以来,我的应用在推送其导航控制器具有自定义导航栏高度的视图控制器时遇到了无限循环。有人找到解决这个问题的方法了吗?谢谢。
-(void)layoutSubviews{
[super layoutSubviews];
float height = 42.5;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
height = 48;
}
imageView.frame = CGRectMake(0, 0, [[UIScreen mainScreen]bounds].size.width, height);
if(UI_USER_INTERFACE_IDIOM() ==UIUserInterfaceIdiomPad){
if(@available(iOS 11.0,*)){
self.frame =CGRectMake(0, 20,[[UIScreen mainScreen]bounds].size.width, 55); // this line provoke the infinite loop
for(UIView *aView in self.subviews){
if([NSStringFromClass([aView class]) isEqualToString: @"_UINavigationBarContentView"]){
aView.frame = CGRectMake(0, 10, aView.frame.size.width, aView.frame.size.height);
}
if([NSStringFromClass([aView class]) isEqualToString: @"_UIBarBackground"]){
aView.frame = CGRectMake(0, 0, aView.frame.size.width, self.frame.size.height );
}
}
}
}
}
【问题讨论】:
-
您在哪里发现代码中的无限循环?请提及那行代码。
-
self.frame =CGRectMake(0, 20,[[UIScreen mainScreen]bounds].size.width, 55);这一行引发了无限循环 -
好的。这是 UINavigationBar 的子类,您如何添加自定义导航栏?
标签: ios objective-c uinavigationcontroller uinavigationbar ios11.2