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


  • 相关阅读:
    将博客搬至CSDN
    IDEA安装对应版本的lombok才生效
    shift键复选dataGrid的记录时多余的文本总被选择了。
    git 导出新修改的文件
    svn老鸟转用git必须理解的概念
    java中Long类型和long类型的大小比较
    eclipse反编译插件jadClipse安装使用教程
    js闭包
    java泛型讲解
    常用加密解密算法【RSA、AES、DES、MD5】介绍和使用
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6768771.html
Copyright © 2011-2022 走看看