[IOS 开发] @IBDesignable @IBInspectable

转载 2015年11月19日 11:25:22


iOS8新特性IBDesignable/IBInspectable,可以直接在XIB或者Storyboard中直接,设置UI类的属性。
例如:UIView.layer.borderWidth、borderColor、cornerRadius这些属性在XIB上是不能直接设置的,但是IBDesignable/IBInspectable,利用运行时机制,就可以把这些属性映射到XIB上了,同时我们UI类的自定义属性也可以映射上去。关于过多的解释我就不多说了可以看看Nate Cook撰写的。

以UIView的子类为例:

Swift IBDesignable/IBInspectable

首先我们得建一个ViewSwift类,View继承自UIView,选择Swift语言。

@IBDesignable
class View: UIView {    
    @IBInspectable var cornerRadius: CGFloat = 0.0 {
        didSet {
            layer.cornerRadius = cornerRadius
            layer.masksToBounds = true
        }
    }

    @IBInspectable var borderColor: UIColor = UIColor() {
        didSet {
            layer.borderColor = borderColor.CGColor
        }
    }

    @IBInspectable var borderWidth: CGFloat = 0.0 {
        didSet {
            layer.borderWidth = borderWidth
        }
    }
}

然后在XIB或Storyboard里面,拖一个UIView上去,把class改成自己定义的View

然后点击旁边的属性编辑,就可以看到我们动态加载上去的属性,直接修改就可以了,XIB上的View也会跟随变化。

我们就可以看到一个UIView的子类变成了这样

Objective-C IBDesignable/IBInspectable

建一个ViewOC类,ViewOC继承自UIView,选择Objective-C语言,在.h里面声明属性

@property (nonatomic, assign)IBInspectable CGFloat cornerRadius;
@property (nonatomic, assign)IBInspectable CGFloat bwidth;
@property (nonatomic, assign)IBInspectable UIColor *bcolor;

注意:IBInspectable修饰的位置。

然后再.m文件里面,@implementation前面用IB_DESIGNABLE修饰。

IB_DESIGNABLE
@implementation ViewOC

然后再set方法里面去赋值就OK了,如下:
- (void)setCornerRadius:(CGFloat)cornerRadius{
    _cornerRadius = cornerRadius;
    self.layer.cornerRadius  = _cornerRadius;
    self.layer.masksToBounds = YES;
}

- (void)setBcolor:(UIColor *)bcolor{
    _bcolor = bcolor;
    self.layer.borderColor = _bcolor.CGColor;
}

- (void)setBwidth:(CGFloat)bwidth {
    _bwidth = bwidth;
    self.layer.borderWidth = _bwidth;
}

效果跟上面Swift是一样的,如果有疑问和建议,欢迎指导和提问。

Objective-C(Swift) IBDesignable/IBInspectable

iOS8新特性IBDesignable/IBInspectable,利用运行时机制,可以把属性映射到XIB上了,同时我们UI类的自定义属性也可以映射上去,可以直接在XIB或者Storyboard中设置...
  • zww1984774346
  • zww1984774346
  • 2016年04月07日 15:58
  • 926

@IBDesignable和@IBInspectable

最近一直在看苹果公司提供的两本swift官方教程电子书,一部是《The Swift Programming Language》,另一部是《Using Swift With Cocoa and Obje...
  • czjuttsw
  • czjuttsw
  • 2014年10月08日 11:02
  • 3328

Swift中@IBDesignable/@IBInspectable的使用

IB可视化属性调节视图-@IBDesignable/@IBInspectable的使用 在工程中新建一个swift类(继承UIView),将它与某个view关联起来。 在文件中添加下面的代码 /...
  • qq_14920635
  • qq_14920635
  • 2016年08月30日 14:40
  • 1920

IOS开发—IB_Designable & IBInspectable介绍

引言在Xcode的旧版本中,试图创建一个自定义控件,并不是很容易,因为在IB中,并不能实时预览到你的设计成果,只能在模拟器中测试。对于设计一个单一组件,可能需要花费大量时间。 Xcode6的发布,苹...
  • Lotheve
  • Lotheve
  • 2015年10月18日 19:56
  • 1877

Xcode8.1中@IBDesignable以及@IBInspectable不能自动刷新的解决办法

Xcode中的@IBDesignable和@IBInspectable关键字出来也有一段时间了,目的是当用户改变View属性时InterfaceBuilder的界面里可以得到即时刷新反馈.这无疑对于A...
  • mydo
  • mydo
  • 2016年11月06日 13:31
  • 1481

新学到的两个关键字IBInspectable / IBDesignable

两个关键字用法很简单,但是感觉如果使用得当,可以节省很多时间 IBDesignable 主要作用:可以显示出来你使用代码写的界面。 使用方法:在swift里,@IBDesignable关键...
  • ralbatr
  • ralbatr
  • 2015年06月16日 15:59
  • 10153

IBInspectable / IBDesignable

iOS http://nshipster.cn/
  • qq_19697705
  • qq_19697705
  • 2015年04月03日 17:14
  • 229

iOS自定义控件(@IBDesignable与@IBInspectable)

任何一个我们自定义的控件(继承自UIView),在其类声明前加上 @IBDesignable。则当此控件添加到 Interface Builder时,Interface Builder 会在 canv...
  • lunarwaterfox
  • lunarwaterfox
  • 2016年05月04日 23:17
  • 45

IBOutLet/IBAction/IBDesignable/IBInspectable

IBOutLet/IBAction/IBDesignable/IBInspectable
  • go_fishing
  • go_fishing
  • 2015年11月04日 15:21
  • 444

IBInspectable和IBDesignable

简单来说,IBInspectable使得在Interface Builder的Attribute Inspector(属性检查器)中能够查看类的属性,而IBDesignable能实时更新视图,很厉害吧...
  • u012307002
  • u012307002
  • 2017年03月13日 08:35
  • 485
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[IOS 开发] @IBDesignable @IBInspectable
举报原因:
原因补充:

(最多只允许输入30个字)