zoukankan      html  css  js  c++  java
  • User Defined Runtime Attributes

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

    1.怎样使用


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


    2属性类型


    以下是一些可用的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 *
    这里还有以下一些特殊的类型:
    Nil- 就是设置这个属性为nil
    Localized String - 一个在locale文件其中的键值,它会在你的 strings 文件里去匹配相应的本地化字符


    demo


    配置一个 view 以下的CALayer 的属性,一般我们都是在viewController里的viewDidLoad里写代码进行配置,如今假设你要设置
    layer.borderWidth 和 layer.cornerRadius 你仅仅须要例如以下所看到的:


    编译执行例如以下:


    假设说你要配置一个自己定义的控件,你就能够在User Defined Runtime Attributes里配置你的自己定义的属性了 如 你的自己定义的Button 自己定义了一个叫name的属性那能够

    假设你要在代码中获取你的自己定义属性。你就能够
     id value = [sender valueForKey:@"name"];


    Converting From Other Types


    仅仅要对应的attribute type代表的时相同的数据类型。那么他们就能够相互替换使用。比如:Point和Size他们地下事实上都是相同的结构体{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


  • 相关阅读:
    【今日CV 视觉论文速览】 19 Nov 2018
    【numpy求和】numpy.sum()求和
    【今日CV 视觉论文速览】16 Nov 2018
    【今日CV 视觉论文速览】15 Nov 2018
    poj 2454 Jersey Politics 随机化
    poj 3318 Matrix Multiplication 随机化算法
    hdu 3400 Line belt 三分法
    poj 3301 Texas Trip 三分法
    poj 2976 Dropping tests 0/1分数规划
    poj 3440 Coin Toss 概率问题
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6768771.html
Copyright © 2011-2022 走看看