如何在 Swift 中将文本居中?

Posted

技术标签:

【中文标题】如何在 Swift 中将文本居中?【英文标题】:How do I center text in 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

【问题讨论】:

试试 title.center = self.view.center @Harambe Squad ***.com/questions/34645943/… title.center = GCPoint(x:self.view .bounds.size.width / 2.0, y:self.view .bounds.size.height / 2.0) How to center UILabel in Swift?的可能重复 还是不行 【参考方案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)

【讨论】:

以上是关于如何在 Swift 中将文本居中?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中将 UIButton 居中?

如何使用 Swift 在 UIView 中将圆形进度条居中?

如何在 WPF 中将标签文本居中?

如何在 XCode 中将标签的文本居中

如何在 Pygame 中将文本居中

如何在 Android 中将文本居中?