大标题,居中对齐
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
【讨论】:
以上是关于大标题,居中对齐的主要内容,如果未能解决你的问题,请参考以下文章