我在Storyboard中定义了一个标签,我正在尝试以编程方式更改其位置。关于SO的一些现有问题似乎已经解决了这个问题,但是没有一个解决方案似乎有效(即标签不会移动)。我删除了标签上的所有现有约束无济于事。我试过了:
class LandingViewController: UIViewController {
@IBOutlet weak var titleLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
titleLabel.frame = CGRectMake(100, 25, titleLabel.frame.size.width, titleLabel.frame.size.height)
}
我也试过
titleLabel.center = CGPointMake(120, 150)
而不是titleLabel.frame
我错过了什么吗?
答案 0 :(得分:5)
使用AutoLayout时,在具有约束的故事板中实例化的视图将translatesAutoresizingMaskIntoConstraints
属性设置为false
,与以编程方式实例化的视图相反。这是因为接口构建器期望约束完全指定该视图的布局。
要手动修改帧/边界/中心,请在代码中将此属性设置为true
。这将使视图的布局行为类似于AutoLayout之前的工作方式,因此请注意,如果只是在<
我建议您首先考虑一下您实际想要做的是通过AutoLayout约束来指定标签的位置。现在,您实际上想要手动指定一个位置是很少见的,如上所述。
答案 1 :(得分:1)
您想根据屏幕尺寸居中标签吗? 如果是这样,请尝试以下(注意UIlabel是以编程方式创建的)
var tempLabel:UILabel
override func viewDidLoad() {
super.viewDidLoad()
//gets screen frame size
var fm: CGRect = UIScreen.mainScreen().bounds
//creates a temp UILabel
tempLabel = UILabel(frame: CGRectMake(0, fm.frame.size.height, fm.size.width, fm.size.height))
//aligns the UIlabel to center
tempLabel.textAlignment = NSTextAlignment.Center
//adding UIlabel to view
view.addSubview(tempLabel)
}