Xcode6中可以創建可以在 storyboard 中進行修改的自定義空間.
@IBDesignable
給控件所使用的class
加上@IBDesignable
前綴, 就可以讓相應class
中代碼的修改, 馬上更新到storyboard
中.
創建一個 UIView
, 并讓它的class
為CustomVierw
.
創建一個 UIVIew, class 為 CustomView
在CustomView
的 class 前加上@IBDesignable
前綴, 這樣在drawRect(rect: CGRect)
中的修改就會馬上更新到Stroyboard
中.
import UIKit
@IBDesignable class CustomView: UIView {
override func drawRect(rect: CGRect) {
UIColor.redColor().setFill()
UIRectFill(bounds)
}
}
通過@IBDesignable 對 View 進行更新
@IBInspectable
除了及時更新代碼的修改之外, 我們還可以在 Inspect 中添加我們自定的屬性調節選項.
首先, 我們需要創建一個 closure屬性borderWidth
(也就是說, 屬性的值是通過 block 中的計算得出的)在自定義屬性之前添加@IBInspectable
前綴, didSet
方法會在屬性被修改之后調用, 我們可以在didSet
中對屬性進行操作, 這里只是簡單的賦值.
@IBInspectable var borderWidth: CGFloat = 10 {
didSet {
//call after varable was set
layer.borderWidth = borderWidth
}
}
回到 Srotyboard 中, 我們會發現, 在對應的 UIView 的 Inspect 中多了一個borderWidth
的設置項, 這樣我們就可以在 storyboard 中對 UI 進行實時修改了.
Inspect 中多了一個 Border Width 的設置項