使用storyboard不仅仅是为了少写代码,最重要的是能实时预览效果,如果有一些界面上细节的微调每次都重启项目比较浪费时间。
可惜storyboard不是万能良药,很多属性在Inspectable中是没有的,还是要在代码中进行设置,后期维护起来成本也会增加。
不过Xcode还是给我们留下了解决办法。以图片圆角为例子,可以用这样的方式来设置:
运行效果:
但是这不是实时渲染啊,运行后才可以看到结果,如果我希望微调数据看效果,还是要设置一次运行一次。
还好Xcode还留给我们更好的方案~流程如下:
1.自定义一个类,继承要使用的控件,这里是UIImageView
2.在class外面加入关键字 @IBDesignable
3.将需要实时渲染的属性写为计算属性,加入关键字 @IBInspectable
例如:
import UIKit
@IBDesignable
class MyImageView: UIImageView {
@IBInspectable var 圆角半径: CGFloat = 0 {
didSet {
self.layer.cornerRadius = 圆角半径
self.layer.masksToBounds = 圆角半径 > 0
}
}
}
当然swift现在中文支持还是很让我开心的。
4.更改对应控件的Custom Class
等待编译,当Designables 显示Up to date,就说明编译完成了。
实时渲染的效果如下: