iOS动画之Core Animation(一)

 Quartz核心框架(Quartz Core framework),动画类层次结构

CALayer显示内容方法: 

1.可以直接或委托方式把图层的内容属性设置为 Core Graphics image

2.提供直接绘制到一个 Core Graphics image上下文委托

// 創建一個圖片
let image = CGImage(width: 100, height: 100, bitsPerComponent: 8, bytesPerRow: 400, space: nil, bitmapInfo: .byteOrder32Little, provider: nil, decode: nil, shouldInterpolate: true)

// 創建一個 UIView
let view = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))

// 將圖片添加到 UIView 中
view.layer.contents = image
import CoreGraphics

// 创建一个 CGContext 对象
let context = CGContext(data: nil, width: 100, height: 100, bitsPerComponent: 8, bytesPerRow: 400, space: nil, bitmapInfo: .byteOrder32Little, provider: nil, decode: nil, shouldInterpolate: true)

// 绘制一个简单的图形
context.setFillColor(CGColor(red: 1, green: 0, blue: 0, alpha: 1))
context.fill(CGRect(x: 0, y: 0, width: 100, height: 100))

// 将绘制结果输出到一个 CGImage 对象中
let image = context.makeImage()

CAScrollLayer:CALayer的子类,简化显示图层的一部分内容,CAScrollLayer对象的滚动区域的范围在他的子图层里面定义

// 创建一个 CAScrollLayer 实例
let scrollLayer = CAScrollLayer()

// 设置滚动条的位置和大小
scrollLayer.scrollBarPosition = .vertical
scrollLayer.scrollBarThickness = 10

// 设置滚动条的颜色和透明度
scrollLayer.scrollBarColor = UIColor.blue
scrollLayer.scrollBarAlpha = 0.5

// 添加滚动条到视图中
self.view.layer.addSublayer(scrollLayer)

CATextLayer:可以方便的从字符串或字符串的内容创建一个图层类的内容

// 创建一个 CATextLayer 实例
let textLayer = CATextLayer()

// 设置文本的内容和位置
textLayer.string = "Hello, World!"
textLayer.position = CGPoint(x: 100, y: 100)

// 设置文本的样式
textLayer.font = UIFont.systemFont(ofSize: 24)
textLayer.foregroundColor = UIColor.black.cgColor
textLayer.alignmentMode = kCAAlignmentCenter

// 添加文本层到视图中
self.view.layer.addSublayer(textLayer)

CATiledLayer:允许递增的显示大而复杂的图片,用于实现瓦片化的图层。它可以让你在应用程序中显示大量的图片或其他内容,而不会导致性能问题

以下是一些关键特性:

  1. 瓦片化:CATiledLayer 可以将图层分割成多个小的瓦片,并且只显示当前可见的瓦片。这样可以减少内存的使用量,并且可以提高性能。
  2. 自动缓存:CATiledLayer 可以自动缓存已经显示过的瓦片,以便下次再次显示时可以快速加载。
  3. 自动滚动:CATiledLayer 可以自动滚动,以便在用户滚动时显示正确的瓦片。
  4. 自定义瓦片大小:CATiledLayer 可以自定义瓦片的大小,以便更好地适应不同的设备和屏幕大小。
    // 创建一个 CATiledLayer 实例
    let tiledLayer = CATiledLayer()
    
    // 设置瓦片的大小
    tiledLayer.tileSize = CGSize(width: 256, height: 256)
    
    // 设置瓦片的内容
    tiledLayer.contents = [UIImage(named: "image1"), UIImage(named: "image2"), ...]
    
    // 添加瓦片层到视图中
    self.view.layer.addSublayer(tiledLayer)

CAEAGLLayer:提供了一个OpenGL ES渲染环境

以下是一些关键特性:

  1. 绘制:CAEAGLLayer 可以让你在应用程序中使用 OpenGL ES 绘制图形。
  2. 自动处理:CAEAGLLayer 可以自动处理绘制的内容,例如绘制的顺序、绘制的区域等。
  3. 缓存:CAEAGLLayer 可以自动缓存绘制的内容,以便下次再次绘制时可以快速加载。
  4. 层次结构:CAEAGLLayer 可以创建层次结构,以便在不同的层次上绘制不同的内容。
    // 创建一个 CAEAGLLayer 实例
    let eaglLayer = CAEAGLLayer()
    
    // 设置绘制的内容
    eaglLayer.drawableProperties = [kEAGLDrawablePropertyRetainedBacking: false,
                                   kEAGLDrawablePropertyColorFormat: kEAGLColorFormatRGBA8]
    
    // 创建一个 OpenGL ES 上下文
    let context = EAGLContext(api: .openGLES2)
    
    // 设置 OpenGL ES 上下文
    eaglLayer.context = context
    
    // 绘制图形
    eaglLayer.draw { (context) in
        // 绘制代码
    }

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值