【问题标题】:CALayer can't be seen看不到CALayer
【发布时间】:2016-01-13 02:07:54
【问题描述】:

我正在努力学习 swift。到目前为止,我的代码运行了,但它没有显示我创建的 CAlayer:

class AppDelegate: NSObject, NSApplicationDelegate {

var window: NSWindow!
var mainview: NSView!
var redLayer: CATextLayer!


func applicationDidFinishLaunching(aNotification: NSNotification) {

    self.mainview = NSView(frame: NSRect(x:0,y:0,width:300,height:300))


    self.window = NSWindow(contentRect: NSMakeRect(0, 0, 300, 300),
        styleMask: NSTitledWindowMask | NSClosableWindowMask |
        NSMiniaturizableWindowMask,
        backing: .Buffered, `defer`: false)

    self.window.contentView!.addSubview(self.mainview)
    self.window.makeKeyAndOrderFront(self.window)
    self.window.makeMainWindow()
    self.redLayer = CATextLayer()
    self.redLayer.string = "test"
    self.redLayer.frame = self.mainview.bounds
    self.redLayer.bounds = CGRect(x:50,y:50,width:300,height:300)
    self.redLayer.position = CGPoint(x: 50, y: 50)
    self.redLayer.backgroundColor = CGColorCreateGenericRGB(1.0, 0.0, 0.0, 1.0)
    self.redLayer.foregroundColor = CGColorCreateGenericRGB(0.0, 0.0, 0.0, 1.0)
    self.redLayer.hidden = false
    self.mainview.layer = self.redLayer
}

func applicationWillTerminate(aNotification: NSNotification) {
    // Insert code here to tear down your application
}}

代码给出了一个灰色的空窗口。但我希望它显示一个带有一行文字的彩色窗口,上面写着“测试”,但我看不到这些东西。

我尝试了多种方法,我无法解决这个问题。

【问题讨论】:

    标签: swift macos calayer


    【解决方案1】:

    在 OS X 中,核心动画支持 (CALayer) 不会自动启用。你必须manually enable it。对于以编程方式创建的视图,请使用 wantsLayer 属性。

    self.mainview.wantsLayer = true
    

    【讨论】:

    • 确实,这解决了问题!
    猜你喜欢
    • 2012-06-20
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    • 2018-08-15
    • 1970-01-01
    相关资源
    最近更新 更多