【发布时间】:2018-02-02 00:47:05
【问题描述】:
首先,感谢您来到这里帮助解决我的问题。谢谢!!!
在 iOS11 beta6 中,sizeThatFits: 似乎不适用于 UINavigationBar。我注意到 UINavigationBar 的结构已经被 Reveal 我的应用所改变。
我已尽力更改自定义导航栏的高度。但是好像一直是44,在iOS11之前就可以了。
- (CGSize)sizeThatFits:(CGSize)size {
CGSize newSize = CGSizeMake(self.frame.size.width, 64);
return newSize;
}
奇怪的是,我只是在didMoveToSuperview方法中记录了它的框架,它的高度是64,但我真的看到在Reveal和应用程序中是44。
我对此一无所知...请帮帮我..谢谢。
更新:
我发现关于我的自定义导航栏 LayoutConstraints 登录控制台是这样的:
"<NSAutoresizingMaskLayoutConstraint:0x604000495ae0 FDCustomNavigationBar:0x7fe2f01399d0.(null) == 42>",
"<NSAutoresizingMaskLayoutConstraint:0x604000495b30 FDCustomNavigationBar:0x7fe2f01399d0.height == 44>"`
错误我什至没有在我的导航栏中使用自动布局。它有什么问题?
8/28 更新:
我已将自定义导航栏的子视图框架设置为导航栏的-
layoutSubviewsmethod。
- (void)layoutSubviews {
[super layoutSubviews];
self.frame = CGRectMake(0, 0, CGRectGetWidth(self.frame), 64);
for (UIView *view in self.subviews) {
if([NSStringFromClass([view class]) containsString:@"Background"]) {
view.frame = self.bounds;
} else if ([NSStringFromClass([view class]) containsString:@"ContentView"]) {
CGRect frame = view.frame;
frame.origin.y = 20;
frame.size.height = self.bounds.size.height - frame.origin.y;
view.frame = frame;
}
}
}
但导航栏会覆盖视图控制器的视图。我该如何解决?
【问题讨论】:
-
@SaurabhJain 谢谢。在我问这个问题之前,我已经看到了。这对我不起作用。
-
@Jerry4me 你能找到解决方法吗?我也面临同样的问题,但对我也没有任何作用。
标签: ios objective-c uinavigationbar ios11