【问题标题】:How do I center text in Swift?如何在 Swift 中将文本居中?
【发布时间】:2017-04-02 11:23:45
【问题描述】:

在 Swift Playground 中,如何将 UILabel 居中在 UIViewController 内?

当我使用title.center = CGPoint(x: vc.view.frame.width / 2, y: 20) 时,文本会从屏幕上消失。

这就是问题

如果有帮助,这是我的代码。

import UIKit
import PlaygroundSupport


// Set up ViewController and other things
var vc = UIViewController()
vc.view.frame.size.height = 75
vc.view.backgroundColor = .white

let title = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 50))
title.textAlignment = .center
title.center = vc.view.center
title.text = "Which code is correct?"
vc.view.addSubview(title)

PlaygroundPage.current.liveView = vc

【问题讨论】:

标签: ios swift3 swift-playground


【解决方案1】:

swift playground 的特殊问题是,视图控制器的实际框架只会正确更新,在视图加载/显示在屏幕上之后。这意味着将标签居中的线放在设置实时视图的线之后应该会有所帮助:

PlaygroundPage.current.liveView = vc
title.center = vc.view.center
vc.view.addSubview(title)

【讨论】:

    【解决方案2】:

    如果我们谈论的是层次结构中的顶视图(即视图控制器的视图),那么这一行就足够了:

    title.center = vc.view.center
    

    否则,如果您想将视图/标签/按钮/任何视图控制器视图的子视图中的任何内容居中 - 下一个解决方案是通用的:

    title.center = CGPoint(x: parentView.bounds.size.width / 2, y: parentView.bounds.size.height / 2)
    

    如果你只想水平或垂直居中——相应修改CGPoint(x:y:)函数的yx参数:

    // Center horizontally but with vertical offset of 20 points
    title.center = CGPoint(x: parentView.bounds.size.width / 2, y: 20 - title.bounds.size.height / 2)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-11
      • 1970-01-01
      • 2020-06-06
      • 2014-09-02
      • 2014-08-08
      • 2014-07-21
      相关资源
      最近更新 更多