以编程方式设置Swift元素的位置

我在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

我错过了什么吗?

使用AutoLayout时,在具有约束的故事板中实例化的视图将其translatesAutoresizingMaskIntoConstraints属性设置为false ,与以编程方式实例化的视图相反。 这是因为界面构建器期望约束完全指定该视图的布局。

要手动修改框架/边界/中心,请在代码中将此属性设置为true 。 这将使视图的布局行为类似于AutoLayout之前的工作方式,因此请注意,如果您只是在实际需要时指定此属性,则您在视图上指定的任何约束都可能会发生冲突或出现意外行为使用约束布局。

我建议您首先考虑一下您实际想要做的是通过AutoLayout约束来指定标签的位置。 现在,您实际上想要手动指定位置是很少见的,如上所述。

您想根据屏幕尺寸居中标签吗? 如果是这样,请尝试以下(注意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) }