使用storyboard不僅僅是為了少寫代碼,最重要的是能實(shí)時(shí)預(yù)覽效果,如果有一些界面上細(xì)節(jié)的微調(diào)每次都重啟項(xiàng)目比較浪費(fèi)時(shí)間。
可惜storyboard不是萬能良藥,很多屬性在Inspectable中是沒有的,還是要在代碼中進(jìn)行設(shè)置,后期維護(hù)起來成本也會增加。
不過Xcode還是給我們留下了解決辦法。以圖片圓角為例子,可以用這樣的方式來設(shè)置:
運(yùn)行效果:
但是這不是實(shí)時(shí)渲染啊,運(yùn)行后才可以看到結(jié)果,如果我希望微調(diào)數(shù)據(jù)看效果,還是要設(shè)置一次運(yùn)行一次。
還好Xcode還留給我們更好的方案~流程如下:
1.自定義一個(gè)類,繼承要使用的控件,這里是UIImageView
2.在class外面加入關(guān)鍵字 @IBDesignable
3.將需要實(shí)時(shí)渲染的屬性寫為計(jì)算屬性,加入關(guān)鍵字 @IBInspectable
例如:
import UIKit
@IBDesignable
class MyImageView: UIImageView {
@IBInspectable var 圓角半徑: CGFloat = 0 {
didSet {
self.layer.cornerRadius = 圓角半徑
self.layer.masksToBounds = 圓角半徑 > 0
}
}
}
當(dāng)然swift現(xiàn)在中文支持還是很讓我開心的。
4.更改對應(yīng)控件的Custom Class
等待編譯,當(dāng)Designables 顯示Up to date,就說明編譯完成了。
實(shí)時(shí)渲染的效果如下:
