2017-04-18 45 views
1

所以,我有一個UILabel,我想集中在視圖中,我嘗試字面上的一切,中心,自動佈局,框架,邊界,convertPoint,anchorPoint,積分,它仍然選擇左上角點爲中心。UILabel不居中

這裏是我的嘗試之一:

let label: UILabel = UILabel() 
label.text = "Search" 
DispatchQueue.main.async { 
    self.label.sizeToFit() 
} 
label.center = view.center 
view.addSubview(label) 
+0

您是否試過用label.frame(...)給它一個特定的位置?爲什麼你需要dispatchQueue for sizeToFit()? –

+0

是的,我試過了。那麼,不使用DispatchQueue使sizeToFit()不起作用。 – user7861999

+0

顯然,將'label.center = view.center'放在DispatchQueue中解決了問題 – user7861999

回答

2

使用.center當您添加子視圖將在大多數情況下工作,但如果屏幕是不斷旋轉或父母的視圖邊界的變化將不起作用。

如果您使用自動佈局,系統會爲您處理所有這些事情,並且您可以用相對的術語描述整個佈局,以便它可以在任何方向上以任何屏幕尺寸工作。

//: Playground - noun: a place where people can play 

import UIKit 
import PlaygroundSupport 

let parentView = UIView(frame: CGRect(x: 0.0, y: 0.0, width: 320.0, height: 320.0)) 
parentView.backgroundColor = .white 

PlaygroundPage.current.liveView = parentView 

let label = UILabel() 
label.text = "Center" 
label.translatesAutoresizingMaskIntoConstraints = false 
parentView.addSubview(label) 
label.centerXAnchor.constraint(equalTo: parentView.centerXAnchor).isActive = true 
label.centerYAnchor.constraint(equalTo: parentView.centerYAnchor).isActive = true