CALayer----寄宿图

2018-04-30  本文已影响0人  M_PI_4

寄宿图

图层中包含的 View

1. contents 属性

contents

1> CALayer 的属性之一
2> 该属性的类型 id
3> 可赋给该属性CGImage,用以展示图片


类型转化问题

形如:

layer.contents = (__bridge id)image.CGImage;


#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIView *layerView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    UIImage *image = [UIImage imageNamed:@"li"];
    self.layerView.layer.contents = (__bridge id)image.CGImage;
    self.layerView.layer.cornerRadius = 5.0f;
    self.layerView.layer.borderWidth = 2.0f;
    self.layerView.layer.borderColor = [UIColor grayColor].CGColor;
    self.layerView.layer.masksToBounds = YES;
}  

contentGravity

从上面的效果来看,图片是有一些变形的,right??

//Scale:拉伸图片
//    Aspect:图片长宽的比例,保持图形的长宽比,保持图片不变形。
//    Aspect Fill:在保持长宽比的前提下,缩放图片,使图片充满容器。
//    Aspect Fit:在保持长宽比的前提下,缩放图片,使得图片在容器内完整显示出来。
//    Scale to Fill: 缩放图片,使图片充满容器。图片未必保持长宽比例协调,有可能会拉伸至变形
    self.layerView.contentMode = UIViewContentModeScaleAspectFit;  
初级改良
    /* A string defining how the contents of the layer is mapped into its
    * bounds rect. Options are `center', `top', `bottom', `left',
    * `right', `topLeft', `topRight', `bottomLeft', `bottomRight',
    * `resize', `resizeAspect', `resizeAspectFill'. The default value is
    * `resize'. Note that "bottom" always means "Minimum Y" and "top"
    * always means "Maximum Y".*/

//  属于CALayer的内容模式
 self.layerView.layer.contentsGravity = kCAGravityResizeAspect;

contentsScale

  1. 去除像素化
  2. 定义寄宿图的像素尺寸和视图大小的比例
layer.contentsScale = [UIScreen mainScreen].scale;  

maskToBounds

等同于UIView的clipsToBounds的属性,去除超出边界的内容


Custom Drawing

除了给图层设置contents的寄宿图,也可以直接用CoreGraphics直接绘制(继承UI View并实现-drawRect:方法)

UIView检测到-drawRect:方法被调用,UIView 会给视图分配一个寄宿图,并且这个寄宿图的像素尺寸等于视图大小与contentsScale的乘积之值。
基于上条原因,如非必须切勿将一空-drawRect:方法置于UIView子类之下

视图出现在屏幕上的时候就会被自动调用
代码内容先调用CoreGraphics绘制寄宿图,之后缓存这些代码内容直到需要被更新(手动调-setNeedDisplay方法 )。

布局

position: 图层在父图层的哪一个位置
anchorPoint:该图层的哪一个点在父图层指定的点上

上一篇下一篇

猜你喜欢

热点阅读