4

我尝试以大标题模式将标题居中,但该代码不会影响。在 AppDelegate 中:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.

    let paragraphStyle = NSMutableParagraphStyle()
    paragraphStyle.alignment = .center
    UINavigationBar.appearance().largeTitleTextAttributes = [NSAttributedStringKey.paragraphStyle: paragraphStyle]

    return true
}
4

3 回答 3

1

大标题不能居中,它的位置在左边并且左对齐。标题的大小无关紧要,如果您希望标题居中,则必须创建自己的自定义标题。

于 2018-02-11T07:13:41.883 回答
-1

我通过将navigationItem 标题设为none 解决了这个问题。然后使用我的文本设置自定义标签并以编程方式向标签添加约束。这是下面的代码。

override func setupNavigationBar() {
        navigationItem.title = .none

        if #available(iOS 11.0, *) {
            navigationController?.navigationBar.prefersLargeTitles = true

            let titleLabel = UILabel()
            titleLabel.text = "Home"
            titleLabel.translatesAutoresizingMaskIntoConstraints = false

            let targetView = self.navigationController?.navigationBar
            targetView?.addSubview(titleLabel)
            titleLabel.anchor(top: nil, left: nil, bottom: targetView?.bottomAnchor, right: nil, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 222, height: 40)

            titleLabel.centerXAnchor.constraint(equalTo: (targetView?.centerXAnchor)!).isActive = true

        } else {
            // Fallback on earlier versions
        }

    }
于 2018-12-18T20:20:47.663 回答
-4

只要有足够的空间,UINavigationBar就会自动将其 titleView 居中。我想您的代码不会影响实际的 titleView 框架,因为您没有后退按钮或 rightBarButton,因此UINavigationBar会自动将 titleView 向右延长。

要修复它,您可以添加空的右栏按钮,或添加带有预定义框架的自定义 titleView

于 2018-02-11T07:05:56.427 回答