大标题,居中对齐

Posted

技术标签:

【中文标题】大标题,居中对齐【英文标题】:Large title, center alignment 【发布时间】:2018-02-11 06:46:49 【问题描述】:

我尝试在大标题模式下将标题居中,但该代码不影响。在 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

【问题讨论】:

这对你有用吗?我下面的解决方案对您有帮助吗? 我决定简单地将标签放在带有附加信息的大标题下方,但无论如何谢谢! 【参考方案1】:

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

【讨论】:

【参考方案2】:

我通过将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
        

    

【讨论】:

我收到此错误:“UILabel”类型的值没有成员“锚” 请在此链接中使用此 UIView 扩展类github.com/nasim-ahmed/InstagramClone/blob/master/… titleLabel 没有“放大”,因此 IMO 答案错误。【参考方案3】:

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

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

【讨论】:

以上是关于大标题,居中对齐的主要内容,如果未能解决你的问题,请参考以下文章

CSS Flexbox 居中对齐

文本对齐:居中和对齐项目:居中不水平工作

将一个项目居中对齐,其他项目与 Flexbox 对齐 [重复]

使用 flexbox 左对齐和居中对齐元素

将 TextView 左对齐和居中对齐

如何居中对齐数据表标题