我试图移动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
但是这个位置没有改变。我是否必须禁用约束才能像这样工作?
答案 0 :(得分:0)
由于您使用的是约束,而不是调整中心,因此您应该调整约束。
答案 1 :(得分:0)
您不必禁用约束,但您必须参与约束。约束定位事物。每当布局发生时,他们都会得到最后的发言权。因此,您尝试更改center
失败 - 它确实有效,但在您看到任何内容之前,布局确实会发生,并且遵守约束。
您必须使用约束来使用,而不是反对它们。你的第一个目标应该是首先获得正确的约束!事实上你试图在viewDidLoad
中改变事物的位置是一种“难闻的气味”;它意味着你的约束是错误的。
但如果你不能这样做,并且出于某种原因你必须在代码中重新定位,那么你的代码必须改变约束,而不是center
或{{1}视图。
答案 2 :(得分:0)
如果要像这样更改中心,则必须删除约束。这种方法不适用于约束。如果您希望对约束使用相同的方法,则应使用viewDidLayoutSubviews
或viewWillLayoutSubviews
方法执行此操作。