有时候需要直接给view设置北京图片,但是UIView对外的api中没有暴露相关接口。这个时候可以通过设置图层的content属性来实现。
具体做法:
UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(0,0,100,100)];
UIImage *image = [[UIImage imageNamed:@"imageName"];
[myView.layer setContents:(__bridge id)image.CGImage];
另外,CALayer的content属性可以设置一些配置项,其中常用的有:
contentsGravity:
kCAGravityCenter
kCAGravityTop
kCAGravityBottom
kCAGravityLeft
kCAGravityRight
kCAGravityTopLeft
kCAGravityTopRight
kCAGravityBottomLeft
kCAGravityBottomRight
kCAGravityResize
kCAGravityResizeAspect
kCAGravityResizeAspectFill
目的是为了决定内容在图层的边界中怎么对齐,其中kCAGravityResizeAspect代表根据view等比例缩放。
contentsScale:
contentsScale这个属性需要在处理高质量的Retina屏图像时设置成合适的值
myView.layer.contentsScale = image.scale
maskToBounds:
不显示超出边界的部分
参考链接:
https://github.com/AttackOnDobby/iOS-Core-Animation-Advanced-Techniques