美文网首页
User Defined Runtime Attributes

User Defined Runtime Attributes

作者: hext123 | 来源:发表于2016-09-20 10:36 被阅读382次

    User Defined Runtime Attributes 是一个不被看重但功能非常强大的的特性,它能够配置一些你在interface builder 中不能配置的属性。当你希望在IB中作尽可能多得事情,这个特性能够帮助你编写更加轻量级的viewcontroller .

    如何使用

    当你使用interface builder是点击任意一个控件,转换到identity Inspector

    图 1:


    请输入图片描述请输入图片描述

    属性类型

    下面是一些可用的Attribute Types与其相对应的数据类型:

    Boolean – BOOL
    Number – NSNumber * or any numeric scalar, e.g. NSInteger
    String – NSString *
    Point – CGPoint
    Size – CGSize
    Rect – CGRect
    Range – NSRange
    Color – UIColor *
    Image - UIImage imageNamed

    这里还有下面一些特殊的类型:

    Nil - 就是设置这个属性为nil
    Localized String - 一个在locale文件当中的键值,它会在你的 strings 文件中去匹配对应的本地化字符

    demo

    配置一个 view 下面的CALayer 的属性,一般我们都是在viewController里的viewDidLoad里写代码进行配置,现在如果你要设置 layer.borderWidthlayer.cornerRadius 你只需要如下所示:

    图 2:


    请输入图片描述请输入图片描述

    编译运行如下:

    图 3:


    请输入图片描述请输入图片描述

    如果说你要配置一个自定义的控件,你就可以在User Defined Runtime Attributes里配置你的自定义的属性了 如 你的自定义的 Button 自定义了一个叫name的属性那可以:

    图 4:


    请输入图片描述请输入图片描述

    如果你要在代码中获取你的自定义属性,你就可以

    id value = [sender valueForKey:@"name"];
    

    Converting From Other Types

    只要相应的attribute type代表的时同样的数据类型,那么他们就可以相互替换使用。例如:PointSize他们地下其实都是同样的结构体{float a,float b}

    但是除了上述几种attribute type,你还可以使用其他的IB不支持数据类型吗?例如我要配置CALayer的 border coloer 和 shadow color,他们都是CGColorRef类型的,并不能直接在User Defined Runtime Attributes进行配置,但请看解决方案:

    图 5:


    请输入图片描述请输入图片描述

    为了兼容CALayer 的KVC ,你得给CALayer增加一个分类

    @implementation CALayer (Additions)
    
    - (void)setBorderColorFromUIColor:(UIColor *)color
    {
      self.borderColor = color.CGColor;
    }
    
    @end
    

    Convert From String

    这经常从NSString中转换成你所要的类型,例如 配置一个 UIEdgeInsets类型的属性,这个不能够被运行时属性支持,但可以考虑如下方案

    @implementation UIScrollView (Additions)
    
    - (void)setContentInsetFromString:(NSString *)contentInsetString
    {
      self.contentInset = UIEdgeInsetsFromString(contentInsetString);
    }
    
    @end
    

    申明

    来源页:
    http://blog.csdn.net/zhou1216141078/article/details/34433443
    (百度到很多同样的文章,这篇博客应该是文章始祖)
    版权归原作者所有,本博主只是做笔记 并对原文章进行了排版 以方便阅读

    相关文章

      网友评论

          本文标题:User Defined Runtime Attributes

          本文链接:https://www.haomeiwen.com/subject/gbxoettx.html