iOS随笔

关于使用故事版与xib的一些干货

2018-03-09  本文已影响479人  CoderXLL

一、前言

从事iOS开发算是有两年多了,从一开始使用纯代码,再到慢慢接触xib,再到后来使用故事版进行快速UI搭建。也收获了使用interface builder时很实用的一些干货,所以在此分享给大家。

本篇文章主要介绍使用SB和Xib时能够用到的两个个宏:IB_DESIGNABLEIBInspectable。使用这些宏,利用运行时机制,就可以把这些属性映射到XIB上了,同时我们UI类的自定义属性也可以映射上去。

二、进入主题

IB_DESIGNABLE(OC) 、 IBDesignable(Swift)

IB_DESIGNABLE宏的功能就是让XCode动态渲染出该类图形化界面;使用IB_DESIGNABLE的方式,把该宏加在自定义类的前面;

import UIKit
// 在定义类的前面加上IBDesignable宏
@IBDesignable
class XLLView: UIView {
    override func awakeFromNib() {
    }
}

当你在故事版或xib自定义View的属性信息栏看到如上图中的Designables Up to date,恭喜你,这个视图在interface builder中可以动态刷新了。

遇到这种情况,不要慌。深吸一口气,然后潇洒的关掉Xcode,心里默念一句MMP,再重启Xcode,一般都能好。这个interface builder动态渲染技术,在苹果这里应该还不是很成熟,出现bug也实属正常。

IBInspectable

上面我们也了解了动态渲染宏IBDesignable的用法,通过keyPath我们能直观地看到效果。但是小伙伴们应该发现了,利用keyPath也比较麻烦啊(苦逼的我一般都是代码敲出来复制到上面去的)。接下来我们就可以通过IBInspectable来代替keyPath设置。

@IBDesignable
class XLLView: UIView {

    @IBInspectable var cornerRadius: CGFloat = 0.0 {
        didSet {
            layer.cornerRadius = cornerRadius
            layer.masksToBounds = true
        }
    }
}

后语

上面演示的例子是用Swift的编写的,OC的其实也一样,只是语法不同罢了。现附上OC与Swift测试代码,以供参考。
interface builder相关宏在OC与Swift中测试调用Demo

上一篇 下一篇

猜你喜欢

热点阅读