自定义导航标题偏移量 ios 11
Custom Nav Title offset ios 11
我有一个自定义导航项标题,它只是两个标签,一个在另一个之上,从 .xib 文件加载。
它是通过调用这个来加载的:
class Utilities {
/// Title and subtitle format custom title in Navigation bar. Top and bottom text are centered on one another.
///
/// - Parameters:
/// - navigationItem: The receiving controller's navigation item.
/// - titleText: Top text to be displayed a little larger and more bold.
/// - subtitleText: Bottom text to be displayed a little smaller and less bold.
class func addCustomNavigationTitle(navigationItem: UINavigationItem, titleText: String, subtitleText: String) {
let customNavigationTitleView = LabelSubLabelCustomHeaderView.instanceFromNib() as! LabelSubLabelCustomHeaderView
customNavigationTitleView.titleLabel.text = titleText
customNavigationTitleView.dateLabel.text = subtitleText
navigationItem.titleView = customNavigationTitleView
}
...
}
定义如下:
class LabelSubLabelCustomHeaderView: UIView {
@IBOutlet var titleLabel: UILabel!
@IBOutlet var dateLabel: UILabel!
class func instanceFromNib() -> UIView {
return UINib(nibName: "LabelSubLabelCustomHeaderView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! UIView
}
}
现在,它被向下推了整整 22 个像素,隐藏了底部标签。
我必须在 viewDidAppear 中设置此视图的框架,以便将其设置直。我尝试了 viewWillAppear 和其他一些东西。我真的不得不隐藏它,设置它,然后显示它,这显然是不对的。
在 iOS11 之前,这没问题。
现在是这样,没有我的黑客修复,我希望我能做对:
下面是它应该的样子,在 iOS 10 之前的样子,以及我的 hack 修复后的样子:
另请注意,当展开转场动画时,视图返回到不正确的帧,22 像素太低了。 我该如何解决这个问题?提前感谢您的帮助。
编辑:更详细的约束信息:
您应该在自定义视图标题 Xib 中添加布局约束,以强制执行下部标签与视图安全区域之间的最小距离。有关 iOS 10/11 的完整工作示例,请参阅 https://github.com/ekscrypto/Swift-Tutorial-Custom-Title-View
我有一个自定义导航项标题,它只是两个标签,一个在另一个之上,从 .xib 文件加载。
它是通过调用这个来加载的:
class Utilities {
/// Title and subtitle format custom title in Navigation bar. Top and bottom text are centered on one another.
///
/// - Parameters:
/// - navigationItem: The receiving controller's navigation item.
/// - titleText: Top text to be displayed a little larger and more bold.
/// - subtitleText: Bottom text to be displayed a little smaller and less bold.
class func addCustomNavigationTitle(navigationItem: UINavigationItem, titleText: String, subtitleText: String) {
let customNavigationTitleView = LabelSubLabelCustomHeaderView.instanceFromNib() as! LabelSubLabelCustomHeaderView
customNavigationTitleView.titleLabel.text = titleText
customNavigationTitleView.dateLabel.text = subtitleText
navigationItem.titleView = customNavigationTitleView
}
...
}
定义如下:
class LabelSubLabelCustomHeaderView: UIView {
@IBOutlet var titleLabel: UILabel!
@IBOutlet var dateLabel: UILabel!
class func instanceFromNib() -> UIView {
return UINib(nibName: "LabelSubLabelCustomHeaderView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! UIView
}
}
现在,它被向下推了整整 22 个像素,隐藏了底部标签。
我必须在 viewDidAppear 中设置此视图的框架,以便将其设置直。我尝试了 viewWillAppear 和其他一些东西。我真的不得不隐藏它,设置它,然后显示它,这显然是不对的。
在 iOS11 之前,这没问题。
现在是这样,没有我的黑客修复,我希望我能做对:
下面是它应该的样子,在 iOS 10 之前的样子,以及我的 hack 修复后的样子:
另请注意,当展开转场动画时,视图返回到不正确的帧,22 像素太低了。 我该如何解决这个问题?提前感谢您的帮助。
编辑:更详细的约束信息:
您应该在自定义视图标题 Xib 中添加布局约束,以强制执行下部标签与视图安全区域之间的最小距离。有关 iOS 10/11 的完整工作示例,请参阅 https://github.com/ekscrypto/Swift-Tutorial-Custom-Title-View