如何动态定位NSView的子视图?

时间:2015-05-06 20:41:34

标签: cocoa swift

我正在尝试更改父NSView中包含的NSButton的坐标,但显然无效,因为按钮位置不会改变。两个元素都在nib文件中定义,父视图使用CoreAnimation将动画应用于它。

我尝试了以下内容。

button.frame.origin.x = 500

和...

var frame:CGRect = button.frame
frame.origin.x = 500
button.frame = frame

即使禁用了动画,我似乎无法动态定位子视图。是否有一些功能可以防止以编程方式定位子视图?

请注意我使用Swift和XCode 6.3.1。

1 个答案:

答案 0 :(得分:1)

我猜你正在使用AutoLayout约束,因为你使用了最新的工具。

如果是这样,设置子视图的框架直接不会按照您预期的方式工作(如果它完全有效,它会导致奇怪的绘图故障/混合时闪烁用动画)。您必须为布局约束创建插座并进行修改。

如果您没有使用自动套餐,我建议您查看button电子邮件地址以确保其实际连接(即您不与{{1}通话}})。即使连接了插座,也要确保它在运行时不是nil - 您可能正在尝试在加载笔尖并恢复插座/操作连接之前与按钮通话。