前面稍稍介紹了一些CALayer的顯示上的屬性,這裡總結幾個實用的使用例子:
自定義UIView的時候設定底層的layer:
@implementation ContainerView
- (instancetype)initWithFrame:(CGRect)frame
{
if(!(self = [super initWithFrame:frame]))
{
return nil;
}
CALayer *styleLayer = [[CALayer alloc] init];
styleLayer.cornerRadius = 4;
styleLayer.shadowColor= [[UIColor blackColor] CGColor];
styleLayer.shadowOffset = CGSizeMake(0, 0);
styleLayer.shadowOpacity = 0.5;
styleLayer.borderWidth = 1;
styleLayer.borderColor = [[UIColor whiteColor] CGColor];
//将圖層縮小顯示
styleLayer.frame = CGRectInset(self.bounds, 12, 12);
[self.layer addSublayer:styleLayer];
//用于釋放記憶體
self.styleLayer = styleLayer;
return self;
}
@end
CALayer的層樹類似于UIView的視圖樹,你可以通路子層和父層:
//通路子層
NSLog(@"star - %@", self.view.layer.sublayers);
CALayer *layer=[CALayer layer];
layer.backgroundColor=[UIColor brownColor].CGColor;
layer.bounds=CGRectMake(0, 0, 200, 200);
layer.position=CGPointMake(100, 100);
[self.view.layer addSublayer:layer];
NSLog(@"end - %@",self.view.layer.sublayers);
NSLog(@"First one : %@", self.view.layer.sublayers[0]);
//通路父層
NSLog(@"SuperLayer is : %@", layer.superlayer);
後面會介紹一些作為動畫效果的CALayer使用,期待!