Swift_ios_layer层常用属性那些事(1)

革码者基地 -经验分享-

学习Swift也有了一段时间,但由于身体原因,中间来了个小插曲,让我对Swift的学习进度慢了下来,但却不曾削弱我对Swift的深爱。如今身体恢复,我已再次加大马力,向目标奋进。

经常一个人坐在静谧宽敞却不通风的空间,点着几盏日光灯,敲着手中的代码,实现一个又一个小功能。不通风那是因为人都走了,空调被迫停止工作(没想到吧),只点几盏灯,那是因为不但可以省电,而且可以营造那么一丢丢小情调。不近视的我经常会在敲码时戴上防辐射眼镜,没办法,人人都得懂得爱护自己嘛~

因为swift,让我认识了不少大牛大神~比如说关东升,刘铭,小波,老镇,StrongX等等,这里是指我认识他们,他们并不认识我。(他们怎么可能会认识我)

关东升老师,是一个非常权威人物。他的书销量都是不错不错的,就是视频有点贵。其中swift开发指南适合初学者学习语法,不知道新版出了没有。

刘铭老师,要说在Swift培训界能用“官方”两字形容的话,刘铭老师算是其一。咬字清晰,正儿八经,直戳要点。估计他的教学宗旨是简洁明了,轻盈快捷。语速语气上确实像新闻主播一样,第一感觉就是“正式”和“权威”。认识刘铭老师是从他的书《Swift应用开发实战》开始认识的。

小波老师(原名张云波)就恰恰相反,估计在语言编排上面没有怎么下功夫,不过也很好,用接地气的方式,用通俗易懂的语言让学者们感觉到高手在民间呐!说起怎么认识小波老师的,那得从百度云说起咯!据我观察,百度云流传的培训视频当中,小波老师的份额倒是非常可观的。人家可以一年四季连载,非常给力,相当不错。

老镇(原名曾伟)老师风格则是居于刘铭老师跟云波老师之间,特点是幽默风趣。在他的教学视频中可以经常听到杜蕾斯杜蕾斯运动,让你想忘都忘不掉。最可爱的时候则是给他自己卖广告的时候。教程里语速平稳顺耳,非常适合配上耳机去倾听。可恨的是在他的群里从没逮住过他。

StrongX老师也挺出名的,语言风格非常贴合大众喜爱,咬字清晰明朗,就像某电台的男主播。虽然我听过他的教程并不是很多,但是从他的简书所发表的文章中就可以知道他是一个多么乐于分享的人,当然文章的水平那也是杠杠滴。

各个老师各有所长,风格各异,有时间去听听他们的课吧。

收藏了以下Swift网址,也是他们驻扎的基地:
花川学院:http://www.hcxy.me/
极客学院:http://www.jikexueyuan.com/
51CTO学院:http://edu.51cto.com/
Swiftv课堂:http://www.swiftv.cn
腾讯课堂:http://ke.qq.com/

接下来我要记录一下学习layer所感。(跟着老镇学的)

在iOS开发中,处理的一个又一个UIView,实际是在操作CALayer。那么为什么不直接对CALayer进行编程呢?那是因为CALayer继承自NSObject,主要是用于图层的处理以及动画,而UIView继承自UIResponder,可以处理交互事件。

由此,可以认为UIView就是对CALayer的一个简单封装,图像绘制、动画都是CALayer做的。有过开发经验的朋友都知道,苹果在UIView里面封装了一套动画接口,但是利用这些接口,只是可以做一些简单、不灵活的动画。如果想在底层做一些改变,想实现一些特别的动画,这是学会掌控Core Animation以外,别无他选。(摘自网络)

代码都在AppDelegate的didFinishLaunchingWithOptions的执行,为的是方便,一启动则实现效果,当然也可以在其他视图控制器里面实现。

  • 1.先定义一个window,为的是后面addSubview.设置window的背景颜色,或者可以设置成图片。后面把window激活一下。
          self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
//      self.window?.backgroundColor = UIColor.whiteColor()
          self.window?.backgroundColor = UIColor(patternImage: UIImage(named: "swift_logo")!)
          self.window?.makeKeyAndVisible()

  • 2.实例化一个根控制器,并作为window的根控制器(必须)。
       let vc = UIViewController(nibName: nil, bundle: nil)
       vc.view = UIView(frame:UIScreen.mainScreen().bounds)
       self.window?.rootViewController = vc
//        window必须添加一个根控制器。但是后面,可以直接用window来addSubview。也可以用vc.view.addSubview。
//        vc.view.addSubview的前提是设置了他的view。这样才能用vc的view来addSubView。
//        vc加载的subView们在window加载的subView们下面。所以先看到的是window的subview。        
//        如果要添加一个新的视图控制器,则需要在vc的基础上presentViewController。
  • 3.定义一个UIView。
       let alertView = UIView(frame: CGRectMake(self.window!.bounds.width/2 - 250 / 2 ,self.window!.bounds.height/2 - 250/2,250,250))
       alertView.backgroundColor = UIColor(patternImage: UIImage(named: "swift_logo")!)
//   alertView.backgroundColor = UIColor.blueColor()       
       alertView.alpha = 1
       alertView.layer.cornerRadius = 125
//         定义一个阴影       
       alertView.layer.shadowOffset = CGSizeMake(0, 10)
       alertView.layer.shadowColor = UIColor.greenColor().CGColor
       alertView.layer.shadowOpacity = 1
       alertView.layer.shadowRadius = 10
//         阴影默认是跟随view的边界。view在上面设置成了圆形,所以阴影是圆形,如果想定义成方形,可通过下面代码设置。
//   let shadowP = CGPathCreateMutable()
//   CGPathAddRect(shadowP, nil,alertView.bounds)
//   alertView.layer.shadowPath = shadowP
//        下面一句如果设置为true,则把阴影也去掉了。如果又想阴影,又想填充一个图片,则可通过alertView.backgroundColor =UIColor(patternImage: UIImage(named: "swift_logo")!)方式填充,
//        而非通过设置layer.contents= UIImage(named: "swift_logo")?.CGImage 加载。但layer.contents填充图片方式好处是可以任意调整图片的显示方式。
//   alertView.layer.masksToBounds = true
//        CALayer有一个contents属性,它在OC中是id类型,在Swift中是AnyObject类型,这意味着它可以是任何类型对象。
//        但在实践中,如果给这个属性赋值的不是CGImage类型,图层会是一片空白。
//        它的这个奇怪的现象是因为MAC OS原因造成的,在MAC OS系统上,给它赋值CGImage或者NSImage都是起作用的。
//        但是在iOS系统,如果将UIImage赋值给它,图层只会是一片空白。(注意,视图指的是UIView,图层指的是CALayer)
            /*
            kCAGravityCenter
            kCAGravityTop
            kCAGravityBottom
            kCAGravityLeft
            kCAGravityRight
            kCAGravityTopLeft
            kCAGravityTopRight
            kCAGravityBottomLeft
            kCAGravityBottomRight
            kCAGravityResize
            kCAGravityResizeAspect
            kCAGravityResizeAspectFill
            */       
//        相当于UIImageView的contentMode属性,可以设置图片显示样式
//    alertView.layer.contents = UIImage(named: "swift_logo")?.CGImage
//    alertView.layer.contentsGravity = kCAGravityResizeAspectFill      
//
//        contentsScale定义了CGImage的像素尺寸和视图大小比例,默认情况下为1.0
//        如何理解这句话,我是这么理解的,屏幕有非retina屏幕(像素和尺寸是1:1)
//        还有retina屏幕,像素和尺寸比是2:1
//        现在还出现了@3x图片,像素和尺寸比理论上是3:1,但实际上在显示的时候,苹果进行了调整(具体可以看ios9的新特性)
//        那么,像我下面这么写,就是说像素点按照屏幕来调整,如果是非retaina,那么就是1:1,如果是retina,就是2:1
//    alertView.layer.contentsScale = UIScreen.mainScreen().scale
  • 4.加载alertView
//    vc.view.addSubview(alertView)
        self.window?.addSubview(alertView)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容

  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,462评论 6 30
  • 转载:http://www.jianshu.com/p/32fcadd12108 每个UIView有一个伙伴称为l...
    F麦子阅读 6,156评论 0 13
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,094评论 5 13
  • //设置尺寸为屏幕尺寸的时候self.window = [[UIWindow alloc] initWithFra...
    LuckTime阅读 793评论 0 0
  • 转自:http://www.code4app.com/blog-866962-1317.html1、设置UILab...
    MMOTE阅读 1,586评论 1 1