gpt4 book ai didi

swift4 - Xcode 9.2 和 Swift 4 中的 AppKit 的 IBDesignable 是否损坏?

转载 作者:行者123 更新时间:2023-12-02 06:54:16 24 4
gpt4 key购买 nike

与此相关的大多数问题和答案都基于 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
}
}

我向应用程序添加了一个自定义 View ,并将 Identity Inspector 中的类属性设置为我的自定义类 (ButtonPresetView)。

它应该显示位于 Canvas 中央的按钮,但 Canvas 是空白的。不确定是否有很多人以这种方式使用它,但它与 Xcode 8.3 中的 Swift 3 配合得很好。

其他人也有这个问题吗?

最佳答案

通过将以下两行添加到 initialControlSetup 函数的顶部,我能够使其在最新的 Xcode 中工作:

wantsLayer = true
canDrawSubviewsIntoLayer = true

我认为这基本上告诉 NSView 以更类似于 iOS 工作方式的方式进行渲染。如果正如您所说,这在 Xcode 8.3 中有效,那么 Apple 可能在没有意识到的情况下在 Xcode 9 中引入了这种回归。

关于swift4 - Xcode 9.2 和 Swift 4 中的 AppKit 的 IBDesignable 是否损坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47662130/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com