当我覆盖UINavigationbar的layoutSubviews时,所有的子视图都将被删除。我正在尝试设置自定义导航栏高度。它工作得很好,但在iOS 11中取得了突破。它是一个自定义类别。
发布于 2018-02-26 16:29:30
我已经用setFrame:和layoutSubviews方法创建了UINavigationBar的一个子类。您需要在Storyboard中将子类设置为NavigationController的NavigationBar。
CGFloat const NavBarHeight = 88.0;
- (CGSize)sizeThatFits:(CGSize)size {
return [self getNavBarSize];
}
- (void)setFrame:(CGRect)frame {
frame.size.height = NavBarHeight;
for (UIView *subview in self.subviews) {
if ([NSStringFromClass([subview class]) containsString:@"UINavigationBarContentView"]) {
subview.frame = CGRectMake(0, 20, self.frame.size.width, NavBarHeight-30);
}
[subview sizeToFit];
}
[super setFrame:frame];
}
- (void)layoutSubviews {
[super layoutSubviews];
for (UIView *subview in self.subviews) {
if ([NSStringFromClass([subview class]) containsString:@"BarBackground"]) {
subview.frame = CGRectMake(0, -20, self.frame.size.width, NavBarHeight+20);
[subview sizeToFit];
}else if ([NSStringFromClass([subview class]) containsString:@"UINavigationBarContentView"]) {
subview.frame = CGRectMake(0, 20, self.frame.size.width, NavBarHeight-30);
}
}
}https://stackoverflow.com/questions/48919914
复制相似问题