自定义标题视图不在iOS 10中居中

这篇文章是一个单独的主题,但与Custom Nav Title offset ios 11相关

我创建了一个新线程,因为它是一个单独的问题。

在此处输入图像描述

来自项目: https : //github.com/ekscrypto/Swift-Tutorial-Custom-Title-View

要重新创建问题,只需在现有的Root View Controller上放置一个按钮即可推送另一个视图控制器。 “<Back”按钮将标题翻过来,这使得它非常不受欢迎。 我怎样才能解决这个问题? 谢谢。

支持早期版本iOS所需的简单更改; 您应该正确调整自定义标题视图的大小,使其达到实际预期的宽度。 iOS 11尝试调整标题视图的宽度以适应基于约束的可用空间,但iOS 10及更低版本将尝试尽可能地保持视图的大小。

因此,解决方案是打开MyCustomTitleView.xib文件,并将MyCustomTitleView的宽度设置为合理的180pt。

干杯!

对于iOS 10及更低版本,您需要为属性titleLabel设置CGFrame。 这是代码示例。

- (void)viewDidLoad { [super viewDidLoad]; UILabel *titleLabel = [[UILabel alloc]init]; NSDictionary *fontAttribute = @{ NSFontAttributeName:[UIFont fontWithName:@"SFProText-Medium" size:15.f]}; NSAttributedString *str = [[NSAttributedString alloc]initWithString:@"YOUR TITLE" attributes:fontAttribute]; titleLabel.attributedText = str; [titleLabel sizeToFit]; // This method create a frame self.navigationItem.titleView = titleLabel; } 

Swift示例:

 override func viewDidLoad() { super.viewDidLoad() let titleLabel = UILabel() let title = NSMutableAttributedString(string: "Your title", attributes:[ NSAttributedStringKey.foregroundColor: UIColor.blue, NSAttributedStringKey.font: UIFont.systemFont(ofSize: 17.0, weight: UIFont.Weight.light)]) titleLabel.attributedText = title titleLabel.sizeToFit() self.navigationItem.titleView = titleLabel }