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

自定义标题视图在iOS 10中未居中,ios,ios10,uinavigationitem,Ios,Ios10,Uinavigationitem,这篇文章是一个单独的主题,但与 我创建了一个新线程,因为它是一个单独的问题 来自项目: 要重新创建问题,只需在现有根视图控制器上放置一个按钮,该按钮将推送另一个视图控制器。“

这篇文章是一个单独的主题,但与

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

来自项目:


要重新创建问题,只需在现有根视图控制器上放置一个按钮,该按钮将推送另一个视图控制器。“支持iOS早期版本所需的简单更改;您应该正确调整自定义标题视图的大小,使其达到预期的实际宽度。iOS 11尝试根据约束调整标题视图的宽度以适应可用空间,但iOS 10及以下版本将尝试尽可能保持视图的大小

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


干杯

对于iOS 10及以下版本,您需要为属性标题标签设置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;

}
快速示例:

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

}

我刚刚下载并测试了你的项目,我发现它是正确的,没有问题。我不知道这有什么关系,但我实际做的是,我将根视图控制器更改为新的视图控制器,并连接新视图控制器上的按钮以推送已经存在的控制器。我通常不使用github帐户,但让我开始吧,这样我就可以向您发送我的项目副本。哦,哇,好的。我的和你的实际上是一样的。事实证明,这只会发生在iOS 10上。@BrandonMantzey我使用Xcode 9 GM、iOS 11 iPhone X模拟器清理并运行了您的项目。。标题视图正确居中,一切正常。@BrandonMantzey可能希望更新您的问题,表明这与iOS 10有关;我试图下载iOS 10.3.1模拟器,但苹果服务器不配合。我的所有物理设备都已更新到iOS 11,因此我将尽快完成此操作