+ (nullable id)defaultValueForKey:(NSString *)key的使用 返回這個(gè)屬性名所對應(yīng)的屬性值的默認(rèn)值,,如果默認(rèn)值是未知的,,則返回nil,子類可以重載這個(gè)方法,,來設(shè)定一些默認(rèn)值,。 例如:我們新建一個(gè)SubLayer類繼承自CALayer,則在SubLayer.m中重寫此方法,。如下: +(id)defaultValueForKey:(NSString *)key{ if ([key isEqualToString:@"backgroundColor"]) { return (id)[UIColor blackColor].CGColor; } if ([key isEqualToString:@"cornerRadius"]) { return @20.0; } return [super defaultValueForKey:key]; } 然后,,我們在mainViewController里面的view上添加一個(gè)SubLayer類型的layer。代碼如下: SubLayer*subLayer=[SubLayer layer]; subLayer.frame=CGRectMake(0,0,40,40); subLayer.position=CGPointMake(100, NavHeight+30); [self.view.layer addSublayer:subLayer];
結(jié)果:我們會發(fā)現(xiàn)sublayer是黑色的并且是圓角的,,如圖 另外,,我們可以新建一個(gè)類SubView繼承自UIView,然后在SubView.m中重寫+(Class)layerClass方法,,代碼如下: +(Class)layerClass { return [SubLayer class]; } 這樣,,我們就把SubView的layer設(shè)置成了SubLayer類型的。 然后,,我們在mainViewController里面的view上添加一個(gè)SubView類型的view和UIView類型的view1,。代碼如下: UIView*view1=[[UIView alloc]initWithFrame:CGRectMake(160, NavHeight+30, 40, 40)]; view1.backgroundColor=[UIColor magentaColor]; [self.view addSubview:view1];
SubView*view=[[SubView alloc]initWithFrame:CGRectMake(220,NavHeight+30, 40, 40)]; [self.view addSubview:view]; 結(jié)果如下圖:(左邊是view1,右邊是view) 我們也可以在SubLayer中重寫- (instancetype)init
代碼如下: - (instancetype)init { self = [super init]; if (self) { self.transform=CATransform3DMakeRotation(M_PI_2, 1, 1, 1); } return self; } 這樣我們做出來的SubLayer就會旋轉(zhuǎn)90度,。 代碼如下: self.subLayer=[SubLayer layer]; self.subLayer.frame=CGRectMake(0,0,40,40); self.subLayer.position=CGPointMake(100, NavHeight+30); [self.view.layer addSublayer:self.subLayer]; 結(jié)果如圖: |
|