我试图更改父 NSView 中包含的 NSButton 的坐标,但显然有些东西不起作用,因为按钮位置没有改变。这两个元素都在 nib 文件中定义,并且父 View 使用 CoreAnimation 应用了动画。
我已经尝试过以下方法。
button.frame.origin.x = 500
还有...
var frame:CGRect = button.frame
frame.origin.x = 500
button.frame = frame
即使禁用动画,我似乎也无法动态定位 subview 。是否有某些功能可以阻止以编程方式定位 subview ?
请注意,我使用的是带有 XCode 6.3.1 的 Swift。
最佳答案
鉴于您使用的是最新工具,我猜您正在使用自动布局约束。
如果是这样,直接设置 subview 的框架将无法按照您期望的方式工作(如果它确实做了任何事情,那么与动画混合时会导致奇怪的绘图故障/闪烁)。您必须为布局约束创建 socket 并修改它们。
如果您没有使用 AutoLayout,我建议您查看一下您的 button
导出,以确保它确实已连接(即,您没有与 nil
对话) )。即使 socket 已连接,请确保它在运行时不是nil
- 您可能会在加载 Nib 并恢复 socket /操作连接之前尝试与按钮对话。
关于cocoa - NSView 的 subview 如何动态定位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30087128/