加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

OS X编程: 使用Core Animation

发布时间:2020-12-14 01:45:44 所属栏目:百科 来源:网络整理
导读:OS X 上使用核心动画( Core Animation ) 自从 swift 推出以来,我断然放弃了 object_c, 转向 swift ,我多年使用 C++ ,所以 swift 对我来说要容易一些。基本的 swift 的内容这里就不说了。 最近我开始研究核心动画( Core Animation ),在这里做个记录。

OS X 上使用核心动画(Core Animation


自从swift推出以来,我断然放弃了object_c,转向swift,我多年使用C++,所以swift对我来说要容易一些。基本的swift的内容这里就不说了。

最近我开始研究核心动画(Core Animation),在这里做个记录。

建立一个基本的Cocoa 应用,修改代码为:

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject,NSApplicationDelegate {

    @IBOutlet weak var window: NSWindow!
    @IBOutlet weak var theView: NSView!
    
    let circleLayer = CAShapeLayer()
    
    func applicationDidFinishLaunching(aNotification: NSNotification) {
        // Insert code here to initialize your application
        
        theView.wantsLayer = true
        let rect = theView.frame
        circleLayer.fillColor = CGColorGetConstantColor(kCGColorBlack)
        circleLayer.path = CGPathCreateWithEllipseInRect( rect,nil)
        self.theView.layer?.addSublayer(circleLayer)
    }

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


也就是添加蓝色代码,编译,如果没有错误的话,你可以可以看到



这个界面巨丑,所以就不贴全图了。它第一次出现我还是小激动了一下。

上面虽然只有短短的几行代码,却花费了我不少时间和心思。网络上关于OS X 的例子相当难找。

theView.wantsLayer = true

上面这句是OS X IOS区别的关键点。因为IOS 底层根本就是使用图层和 Core Animation绘制视图的,而缺省情况下 OS X并没有。如果你打算在OS X使用,就需要打开这个开关,通知 NSView为你准备好图层,你可以查看视图的属性,layer属性缺省为nil

这里的第二个问题就是CGPath。网上有句话这样写:bezierPathCGPath赋值给caShapeLayerpath,即caShapeLayer.path =bezierPath.CGPath

OS X NSBezierPath里面并没有这个CGPath属性。当然,总有办法把 NSBezierPath变成 CGPath,我们为什么不直接使用CGPath呢?然后是CGColor。从普通的道理上讲,使用CGPathCGColor是最正宗的方式,不然苹果就没有必要提供这些类。

接下来及时NSView,跟层相关的东西还有不少。前面只是大致看了看,接下来我会继续研究。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读