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


  • 相关阅读:
    2.27
    string.Format("{0,-50}", "qqqqqqqqqqqq")
    dataGridView
    dataGridView添加列行
    设置拖拽事件,获取拖拽内容
    ,鼠标右键,将ListView的内容存入剪贴板
    winform ListView点击行表头,排序
    Aes加密解密
    C#get ,post HttpClient
    将json格式的string转化为对象
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6768771.html
Copyright © 2011-2022 走看看