在iOS 8中移动Label的位置

时间:2015-05-25 18:33:30

标签: ios constraints

我试图移动Label的位置,但它不起作用。

到目前为止,我所做的是添加一个标签zu我的视图,添加初始位置的约束。

在viewDidLoad()中我现在想将标签移动到另一个位置。

基本思想是有三个标签,根据某些状态,改变标签的顺序。

我在viewDidLoad()中试过这个:

var point1 = beacon1Label.center as CGPoint
var point2 = beacon2Label.center as CGPoint
var point3 = beacon3Label.center as CGPoint

beacon3Label.center = point1
beacon1Label.center = point2

但是这个位置没有改变。我是否必须禁用约束才能像这样工作?

3 个答案:

答案 0 :(得分:0)

由于您使用的是约束,而不是调整中心,因此您应该调整约束。

答案 1 :(得分:0)

您不必禁用约束,但您必须参与约束。约束定位事物。每当布局发生时,他们都会得到最后的发言权。因此,您尝试更改center失败 - 它确实有效,但在您看到任何内容之前,布局确实会发生,并且遵守约束。

您必须使用约束来使用,而不是反对它们。你的第一个目标应该是首先获得正确的约束!事实上你试图在viewDidLoad中改变事物的位置是一种“难闻的气味”;它意味着你的约束是错误的。

但如果你不能这样做,并且出于某种原因你必须在代码中重新定位,那么你的代码必须改变约束,而不是center或{{1}视图。

答案 2 :(得分:0)

如果要像这样更改中心,则必须删除约束。这种方法不适用于约束。如果您希望对约束使用相同的方法,则应使用viewDidLayoutSubviewsviewWillLayoutSubviews方法执行此操作。