我正在尝试更改父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/

10-09 18:21
查看更多