打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【iOS学习】CALayer设定一些属性的默认值


+ (nullable id)defaultValueForKey:(NSString *)key的使用

    返回这个属性名所对应的属性值的默认值,如果默认值是未知的,则返回nil,子类可以重载这个方法,来设定一些默认值。

 例如:我们新建一个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上添加一个SubLayer类型的layer。代码如下:

     SubLayer*subLayer=[SubLayer layer];

     subLayer.frame=CGRectMake(0,0,40,40);

     subLayer.position=CGPointMake(100, NavHeight+30);

     [self.view.layer addSublayer:subLayer];

 

 结果:我们会发现sublayer是黑色的并且是圆角的,如图

                                                  

 另外,我们可以新建一个类SubView继承自UIView,然后在SubView.m中重写+(Class)layerClass方法,代码如下:

             +(Class)layerClass

             {

                 return [SubLayer class];

             }

 这样,我们就把SubViewlayer设置成了SubLayer类型的。

然后,我们在mainViewController里面的view上添加一个SubView类型的viewUIView类型的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];

 结果如下图:(左边是view1,右边是view

                                             
       我们也可以在SubLayer中重写- (instancetype)init

 代码如下:

         - (instancetype)init

         {

             self = [super init];

             if (self) {

                 self.transform=CATransform3DMakeRotation(M_PI_2, 1, 1, 1);

             }

             return self;

         }

 这样我们做出来的SubLayer就会旋转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];

 结果如图: 

                                                 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
subview在SuperView的bounds之外接收触摸信息。以及subview的响应
How to add an UIViewController's view as subview
IOS 特性CALayer的使用
IOS 如何从ViewController获取一个UIView上的某种或者某个控件
[apple文档]UIView 编程指南
iOS开发中CAlayer层的属性以及自定义层的方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服