[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是一样的,如果有疑问和建议,欢迎指导和提问。

相关文章推荐

@IBDesignable和@IBInspectable

原文   http://blog.csdn.net/tounaobun/article/details/39890667 最近一直在看苹果公司提供的两本swift官方教程电子书,一...

Swift中@IBDesignable/@IBInspectable的使用

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

@IBDesignable和@IBInspectable

最近一直在看苹果公司提供的两本swift官方教程电子书,一部是《The Swift Programming Language》,另一部是《Using Swift With Cocoa and Obje...

IBInspectable / IBDesignable

IBInspectable IBInspectable 属性提供了访问旧功能的新方式:用户自定义的运行时属性。从目前的身份检查器(identity inspector)中访问,这些属性在 Int...

Objective-C(Swift) IBDesignable/IBInspectable

iOS8新特性IBDesignable/IBInspectable,利用运行时机制,可以把属性映射到XIB上了,同时我们UI类的自定义属性也可以映射上去,可以直接在XIB或者Storyboard中设置...

谈不完美的IBDesignable/IBInspectable可视化效果编程

我们好像慢慢地习惯了“理想很丰满,现实很骨感”这样顺序这样的转折这样常态,那么如果是“现实很丰满,理想很骨感”,我们能接受吗?现实丰满可以,但是理想很骨感那就不要将就了。就像薛之谦希望是能通过“丑八怪...

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

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

(0058)iOS开发之iOS8新特性IBDesignable的使用

在OC和Swift中使用IBDesignable/IBInspectable iOS8新特性IBDesignable/IBInspectable,可以直接在XIB或者Storyboard中直接,设置...

IOS开发使用@IBInspectable给控件添加额外属性

如何优雅地在Storyboard中设置圆角 项目中经常遇到一些设计使用圆角,不得不说这样的设计经常能够为App的视图润色不少! 通常做法 对于代码党来说,很简单的加上一行代码就能...
  • qlt445
  • qlt445
  • 2016年05月05日 18:27
  • 830

IOS 开发官方教程(汉化版).pdf

  • 2017年11月14日 08:31
  • 5.76MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[IOS 开发] @IBDesignable @IBInspectable
举报原因:
原因补充:

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