使用Swift3.0詮釋UIView與CALayer

一.什么是UIView,什么是CALayer?

  • iOS中的一些控件UIButton,UILabel,UITextView等等,能產生交互的基本都是UIView
  • 在創建UIView對象時,UIView內部會自動創建一個CALayer層,通過UIView的layer屬性可以訪問這個層.當UIView需要顯示到屏幕上時,會調用drawRect:方法進行繪圖,并且會將所有內容繪制在自己的層上,繪圖完畢后,系統會將層拷貝到屏幕上,于是就完成了UIView的顯示(UIView本身不具備顯示的功能,是它內部的層才有顯示功能).

二.layer的作用

首選創建一個UIImageView對象
1.簡單的頭像圓角

imageView.layer.cornerRadius = 25
imageView.layer.masksToBounds = true

2.設置陰影

//陰影顏色
imageView.layer.shadowColor = UIColor.black.cgColor
//陰影偏移
imageView.layer.shadowOffset = CGSize.init(width: 0, height: 1)
//不透明度
imageView.layer.shadowOpacity = 0.5

3.設置控件的邊框和顏色

imageView.layer.borderWidth = 1
imageView.layer.borderColor = UIColor.red.cgColor

4.設置旋轉縮放等效果

imageView.layer.transform  = CATransform3DMakeRotation(CGFloat(M_PI_4), 0, 0, 1)

5.可以使用layer添加簡單圖層,或者圖片圖層

        let myLayer = CALayer()
        myLayer.bounds = CGRect.init(x: 0, y: 0, width: 100, height: 150)
        //設置層的位置
        myLayer.position = CGPoint.init(x: 100, y: 380)
        //這里用的是UIImage的CGImage屬性,是一種CGImageRef類型的數據
        myLayer.contents = UIImage.init(named: "22.jpeg")?.cgImage
        myLayer.cornerRadius  = 10
        myLayer.masksToBounds = true
        self.view.layer.addSublayer(myLayer)
CALayer中使用cgImage數據類型的原因?
  • CALayer是定義在QuartzCore框架中的;CGImageRef、CGColorRef兩種數據類型是定義在CoreGraphics框架中的;UIColor、UIImage是定義在UIKit框架中的
  • QuartzCore框架和CoreGraphics框架可以跨平臺使(iOS和Mac OS X),UIKit只能在iOS中使用
  • 不過很多情況下,可以通過UIKit對象的特定方法,得到CoreGraphics對象,比如UIImage的CGImage方法可以返回一個CGImageRef

三.UIView和CALayer的選擇

  • UIView比CALayer多了響應功能,UIView繼承與UIResponder. CALayer直接繼承與NSObject, CALayer不具有響應功能
  • 如果顯示出來的東西需要跟用戶進行交互的話,用UIView.如果不需要跟用戶進行交互,用UIView或者CALayer都可以.CALayer不用處理響應事件性能會高一些,更加輕量級.
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 在iOS中隨處都可以看到絢麗的動畫效果,實現這些動畫的過程并不復雜,今天將帶大家一窺ios動畫全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,572評論 6 30
  • 在iOS中隨處都可以看到絢麗的動畫效果,實現這些動畫的過程并不復雜,今天將帶大家一窺iOS動畫全貌。在這里你可以看...
    F麥子閱讀 5,141評論 5 13
  • CALayer1-簡介 本文目錄 一、什么是CALayer 二、CALayer的簡單使用 回到頂部 一、什么是CA...
    白水灬煮一切閱讀 2,607評論 0 8
  • 在iOS實際開發中常用的動畫無非是以下四種:UIView動畫,核心動畫,幀動畫,自定義轉場動畫。 1.UIView...
    請叫我周小帥閱讀 3,159評論 1 23
  • UiView的一些代理 一.<NSCoding> 我們會在以下這些場合用到NSCoding: 1. XIB/Sto...
    愛笑的貓mi閱讀 1,183評論 0 1