cocoa - NSView 的 subview 如何动态定位?

标签 cocoa swift

我试图更改父 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/

相关文章:

macos - 如何确定卷是否支持垃圾箱?

objective-c - 窗口关闭时 NSPopover 崩溃

objective-c - 几个不推荐使用的对象集成 Stripe API IOS 9

swift - 允许 PieChartView 在 Swift 中隐藏小切片的标签

objective-c - 是否有必要重写 bind :toObject:withKeyPath:options: in an NSView subclass to implement binding?

cocoa - CGPDF文档和本地数据

objective-c - Mac OS X 上的简单 Cocoa 模态窗口对话框

iOS Swift 编程 UITabBar

ios - subview 的框架在呈现 View Controller 后更新

ios - 更改自定义 UIButton 状态时的 UI 问题