1.簡(jiǎn)介
CATiledLayer是一個(gè)會(huì)異步繪制內(nèi)容的圖層,對(duì)于處理非常大的圖像時(shí)锡凝,很有用粘昨,可以看到一部分,而無(wú)序加載全部。
2.屬性
屬性 | 作用 |
---|---|
levelsOfDetail | 細(xì)節(jié)數(shù)张肾,默認(rèn)為1 |
levelsOfDetailBias | 放大級(jí)數(shù)芭析,默認(rèn)為0 |
tileSize | 內(nèi)部小模塊的大小 |
方法 | 作用 |
---|---|
class fadeDuration() | 出現(xiàn)的時(shí)間,默認(rèn)0.25 |
3.使用
//首先吞瞪,自定義一個(gè)TiledLayer
import UIKit
class CustomTiledLayer: CATiledLayer {
//重寫(xiě)出現(xiàn)的時(shí)間
override class func fadeDuration() -> CFTimeInterval {
return 0
}
}
class TiledBackgroundView: UIView {
let sideLength = CGFloat(50)
//返回CATiledLayer
override class var layerClass: AnyClass {
return CustomTiledLayer.self
}
override init(frame: CGRect) {
super.init(frame: frame)
//srand48:生成種子的初始值
srand48(Int(NSDate().timeIntervalSince1970))
//創(chuàng)建出CATiledLayer
let layer = self.layer as! CustomTiledLayer
//系統(tǒng)分辨率
let scale = UIScreen.main.scale
//瓦塊的大小馁启,按照分辨率縮放
layer.tileSize = CGSize(width: sideLength*scale, height: sideLength*scale)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func draw(_ rect: CGRect) {
let context = UIGraphicsGetCurrentContext()
//drand48:產(chǎn)生一個(gè)[0.0, 1.0]區(qū)間中的浮點(diǎn)數(shù)。
let red = CGFloat(drand48())
let green = CGFloat(drand48())
let blue = CGFloat(drand48())
context?.setFillColor(red: red, green: green, blue: blue, alpha: 1)
context?.fill(rect)
}
}
//使用
import UIKit
class ViewController: UIViewController {
var tiedBackgroundView: TiledBackgroundView!
override func viewDidLoad() {
super.viewDidLoad()
setUpLayer()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func setUpLayer() {
tiedBackgroundView = TiledBackgroundView(frame: view.frame)
view.addSubview(tiedBackgroundView)
}
}
最終結(jié)果如圖: