我正在尝试使用定义的高度子类化 UINavigationBar
并尝试实现 sizeThatFits
方法:
@implementation NavigationBar
- (CGSize)sizeThatFits:(CGSize)size {
NSLog(@"frame: %@", NSStringFromCGRect(self.frame));
return CGSizeMake(self.frame.size.width, 62);
}
@end
但显然 self.frame.size.width
总是返回一个奇怪的值,它不是我想要的 1024,它导致了下面显示的行为:
NSLog
输出:
> frame: {{224, 20}, {576, 62}}
在手动定义 CGSizeMake(1024, 62)
时,这将导致以下情况:
隐藏按钮和 NSLog
输出将是:
> frame: {{-128, 20}, {1280, 62}}
关于如何正确实现此方法以使导航栏扩展到所有窗口的任何想法?
最佳答案
如果你想避免使用“魔数(Magic Number)”,可以尝试使用 UINavigationBar
superview 的大小。
- (CGSize)sizeThatFits:(CGSize)size
{
return CGSizeMake(self.superview.bounds.size.width, 62.0f);
}
我在 iOS 6 上运行良好。无需覆盖 layoutSubviews
。
关于ios - 自定义 UINavigationBar sizeThatFits 实现不返回真实的 frame.size.width,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13706469/