我正在尝试更改父NSView中包含的NSButton的坐标,并且某些操作显然无法正常工作,因为按钮位置不会更改。这两个元素都在nib文件中定义,并且父视图使用CoreAnimation对其应用了动画。
我尝试了以下方法。button.frame.origin.x = 500
和...
var frame:CGRect = button.frame
frame.origin.x = 500
button.frame = frame
即使禁用了动画,我似乎也无法动态定位子视图。是否有一些功能可以防止以编程方式定位子视图?
请注意,我在XCode 6.3.1中使用Swift。
最佳答案
考虑到您使用的是最新工具,我猜您正在使用自动版式约束。
如果是这样,则直接设置子视图的框架将无法按您期望的方式工作(如果它做任何事情,当与动画混合时,将导致奇怪的图形毛刺/闪烁)。您必须为布局约束创建出口并对其进行修改。
如果您不使用AutoLayout,建议您查看您的button
插座以确保其确实已连接(即,您不在与nil
通话)。即使已连接插座,也请确保在运行时它不是nil
-在装入笔尖和恢复插座/操作连接之前,您可能试图与按钮交谈。
关于cocoa - NSView的 subview 如何动态定位?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30087128/