【问题标题】:Custom Title View not Centered in iOS 10自定义标题视图未在 iOS 10 中居中
【发布时间】:2017-09-25 22:33:16
【问题描述】:

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

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

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

要重现问题,只需在现有的根视图控制器上放置一个按钮,该按钮会推动另一个视图控制器。 “

【问题讨论】:

    标签: ios ios10 uinavigationitem


    【解决方案1】:

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

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

    干杯!

    【讨论】:

    • 我刚刚下载并测试了您的项目,我发现它是正确的,没有问题。我不知道为什么这很重要,但我实际上所做的是,我将根视图控制器更改为新视图控制器,并连接新视图控制器上的按钮以推送已经存在的控制器。
    • 我通常不使用 github 帐户,但让我开始吧,这样我就可以向您发送我的项目的副本。
    • 哇哦,好吧。我的和你的其实是一样的。事实证明,这只会发生在 iOS 10 上。
    • @BrandonMantzey 我使用 Xcode 9 GM、iOS 11 iPhone X 模拟器清理并运行了您的项目。在标题视图正确居中的情况下,一切都按预期运行。
    • @BrandonMantzey 可能想要更新您的问题,表明这与 iOS 10 相关;我正在尝试下载 iOS 10.3.1 模拟器,但 Apple 服务器不合作。我所有的物理设备都已更新到 iOS 11,所以我会尽快更新
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-06-16
      • 1970-01-01
      • 1970-01-01
      • 2016-01-18
      • 1970-01-01
      • 1970-01-01
      • 2019-11-05
      • 1970-01-01
      相关资源
      最近更新 更多