美文网首页
第2章 寄宿图

第2章 寄宿图

作者: cdd48b9d36e0 | 来源:发表于2018-09-08 22:26 被阅读0次

CALayer中包含的图就叫寄宿图,其中有个contents属性就是专门用来存放图片的

2.1 contents

CALayer UIView 说明
contentGravity contentMode 和cotentMode一样,contentsGravity的目的是为了决定内容在图层的边界中怎么对齐,也就是拉伸方式;contentGravity 的值是字符串常量,contentMode的值是枚举
contentsScale Retina 屏以前为1.0,Retina 屏为2.0,Plus机型为3.0,CATextLayer就经常需要设置layer.contentsScale = [UIScreen mainScreen].scale来让文字在不同屏幕下保证清晰
maskToBounds clipsToBounds 是否显示超出边界的内容
contentsRect 裁剪图片用的,使用的坐标是单位(IOS的三种坐标系统:点、像素、单位),默认的contentsRect是{0, 0, 1, 1}
contentsCenter 与UIImage 的resizableImageWithCapInsets:类似 设置拉伸区域用的,默认的contentsCenter是{0, 0, 1, 1},常见用法是设置为{0.25, 0.25, 0.5, 0.5},原理就是很简单见原文的图示;另外这个属性可以在IB里直接设置

2.2 Custom Drawing

给图层的contents赋CGImage的值不是唯一的设置寄宿图的方法。我们也可以像-drawRect:方法那样用图层自己的绘图方法来自定义绘制,而drawRect事实上也是让底层的CALayer安排了重绘工作和保存了因此产生的图片

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    CALayer *blueLayer = [CALayer layer];
    blueLayer.frame = CGRectMake(50.0f, 50.0f, 100.0f, 100.0f);
    blueLayer.backgroundColor = [UIColor blueColor].CGColor;
    
    ////让图层自绘制有三步:
    //第一步:设置代理,并遵循协议
    blueLayer.delegate = self;
    
    blueLayer.contentsScale = [UIScreen mainScreen].scale;
    
    [self.layerView.layer addSublayer:blueLayer];
    
    //第二步:和UIView的drawRect不同,CALayer要自己手动开启重绘方法
    [blueLayer display];
}
//第三步:实现代理。
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
{
    //draw a thick red circle
    CGContextSetLineWidth(ctx, 10.0f);
    CGContextSetStrokeColorWithColor(ctx, [UIColor redColor].CGColor);
    CGContextStrokeEllipseInRect(ctx, layer.bounds);
}

另外一点与UIView的重绘不同的是,CALayer就算你没有设置masksToBounds,绘制的内容也不会超出边界

相关文章

  • 第2章 寄宿图

    CALayer中包含的图就叫寄宿图,其中有个contents属性就是专门用来存放图片的 2.1 contents ...

  • 寄宿图

    看到这个名字可能会一脸懵逼,什么是寄宿图啊?简单的来说就是图层中包含的图。 contents属性 CALayer有...

  • 寄宿图

    contents属性 定义类型为id,但ios上必须赋值 CGImage,否则图层显示为空 (Mac OS 上 可...

  • CALayer----寄宿图

    寄宿图 什么是寄宿图 图层中包含的 View 1. contents 属性 contents: 1> CALaye...

  • CALayer寄宿图

    寄宿图 CALayer 类能够包含一张图片,这个图片就是CALayer寄宿图,用属性contents进行赋值。 c...

  • CoreAnimation寄宿图

    contents: 在MacOS上他是CGImage或者NSImage都可以,但是在IOS必须是一个CGImage...

  • 2、寄宿图

    文章摘录自:https://github.com/AttackOnDobby/iOS-Core-Animation...

  • CALayer寄宿图

    什么是寄宿图? 简而言之就是图层(layer)中包含的图,这个图为了我们提供了能够去设置或者绘制出我们想要的图案显...

  • CALayer的寄宿图

    CALayer 有一个属性叫做contents,它可以直接在图层中放置一张图片 @property conte...

  • iOS动画—寄宿图

    寄宿图 图片胜过千言万语,界面抵得上千图片 ——Ben Shneiderman   我们在第一章『图层树』中介绍了...

网友评论

      本文标题:第2章 寄宿图

      本文链接:https://www.haomeiwen.com/subject/lqolgftx.html