有关coreGraphics

coreGraphics 对于iOS只能在drawRect中使用,因为只有在drawRect方法中可以通过UIGraphicsGetCurrentContext方法获取到可以用来绘图的context。

1.重新绘图相关方法和属性

通过UIView的setNeedsDisplay或setNeedsDisplayInRect:来使view重新调用drawRect方法进行绘图。

contentMode 该属性是定义当UIView的bounds变化的时候,如何去布局其内容。其中个就有一个可选项是UIViewContentModeRedraw,可以使得在UIView的bounds发生变化的时候再次调用drawRect进行重画。

2.CGLayer和CALayer的用法思路有点不同

对于Context来说,CGlayer对象与transparency layer对象,CGPath对象,以及使用CGContext方法创建的path,处在同等地位。

与CALayer不同,CGLayer更像是一个小的绘图元素,通常在需要重复同一个图像,比如一张桌布上的小碎花,就把小碎花画在CGLayer对象上,然后将CGLayer对象多次添加到context上。
CGLayer需要用Context来创建(方法是CGLayerCreateWithContext),这样CGLayer的属性就已经设置成和context一致,无需手动设置太多。当然自己也可以去改。

创建好CGLayer对象之后, 要在layer上作画还要先获取该layer对象的context,通过CGLayerGetContext方法,然后获取到context之后就可以开始在layer上画了,方法同画在其他context一样。

最后,就可以将这个layer添加到所需的地方,通常就是某个context上,往往会是创建这个layer的context,也不一定,只不过将layer添加到与其自身context一致的context上性能更好,apple的文档上这么说。将layer添加到context可以用方法CGContextDrawLayerInRect或CGContextDrawLayerAtPoint。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值