我正面临着这样一种情况:导航栏在纵向模式下看起来很好但在横向上被裁剪:
我将UINavigationBar
子类化如下:
class CustomNavigationBar: UINavigationBar {
override func sizeThatFits(size: CGSize) -> CGSize {
let newSize :CGSize = CGSize(width: self.frame.size.width, height: 64)
return newSize
}
}
并通过StoryBoard将其分配给相应的导航控制器:
但没有区别。
有什么想法吗?
答案 0 :(得分:1)
导航栏在纵向和横向模式下具有不同的高度。您应该根据导航栏高度处理自定义标题视图的内容。当导航栏的高度发生变化时,使用autolayout自动调整子视图。
答案 1 :(得分:0)
我通过覆盖扩展中的sizeThatFits
func来解决它。这个想法是它将大小重置为44,这是肖像的默认值:
// prevent navigation bars from resizing in landscape
extension UINavigationBar {
public override func sizeThatFits(size: CGSize) -> CGSize {
let portraitSize = CGSizeMake(UIScreen.mainScreen().bounds.width, 44)
return portraitSize
}
}