swift4 – Xcode 9.2和Swift 4中的AppKit是否破坏了IBDesignable
发布时间:2020-12-14 04:58:07 所属栏目:百科 来源:网络整理
导读:大多数问题以及与此相关的答案均基于 Xcode和 Swift的旧版本.此外,90%的问题与UIKit和绘制自定义控件有关. 我正在添加一个标准按钮,该按钮位于自定义控件内部,用IBDesignable修饰. import Cocoa@IBDesignable public class ButtonPresetView: NSView { publ
大多数问题以及与此相关的答案均基于
Xcode和
Swift的旧版本.此外,90%的问题与UIKit和绘制自定义控件有关.
我正在添加一个标准按钮,该按钮位于自定义控件内部,用IBDesignable修饰. import Cocoa @IBDesignable public class ButtonPresetView: NSView { public override init(frame frameRect: NSRect) { super.init(frame: frameRect) initialControlSetup() } public required init?(coder decoder: NSCoder) { super.init(coder: decoder) initialControlSetup() } private func initialControlSetup() { let button = NSButton(title: "Hello",target: nil,action: nil) button.translatesAutoresizingMaskIntoConstraints = false addSubview(button) // Configure button centerXAnchor.constraint(equalTo: button.centerXAnchor).isActive = true centerYAnchor.constraint(equalTo: button.centerYAnchor).isActive = true } } 我向应用程序添加了一个自定义视图,并将Identity Inspector中的class属性设置为我的自定义类(ButtonPresetView). 它应该显示以画布为中心的按钮,但画布为空白. 还有其他人有这个问题吗? 解决方法
通过在initialControlSetup函数的顶部添加以下两行,我能够在最新的Xcode中使用它:
wantsLayer = true canDrawSubviewsIntoLayer = true 我认为这基本上告诉NSView以与iOS工作方式更相似的方式呈现.如果你正如你所说的那样在Xcode 8.3中有效,Apple可能会在Xcode 9中引入这种回归而没有意识到这一点. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |