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

时间:2017-09-25 22:33:16

标签: ios ios10 uinavigationitem

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

有关

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

enter image description here

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

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

2 个答案:

答案 0 :(得分:6)

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

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

干杯!

答案 1 :(得分:0)

对于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

}