Swift 中的 IBDesignable/IBInspect
-
IBDesignable/IBInspectable,是iOS8的新特性。其主要功能是可以直接在XIB或者Storyboard中直接,设置UI类的属性。例如我们自定义一些控件,可以把控件的属性映射到XIB上。
-
下面是控件的例子,更直观的将IBDesignable/IBInspectable的作用显现出来。
-
首先我们新建一个RatingBar类
@IBDesignable
class RatingBar: UIView {
@IBInspectable var ratingMax: CGFloat = 10 //总分
@IBInspectable var starNums: Int = 5 //星星总数
//分数
@IBInspectable var rating: CGFloat = 0 {
didSet {
if 0 > rating { rating = 0 }
else if ratingMax < rating { rating = ratingMax }
//回调给代理
self.setNeedsLayout()
}
}@IBInspectable var imageLight: UIImage = UIImage(named: "ratingbar_star_light")!
@IBInspectable var imageDark: UIImage = UIImage(named: "ratingbar_star_dark")!@IBInspectable var canAnimation: Bool = false //是否开启动画模式
@IBInspectable var animationTimeInterval: NSTimeInterval = 0.2 //动画时间
@IBInspectable var isIndicator: Bool = false //是否是一个指示器 (用户无法进行更改)private var foregroundRatingView: UIView!
private var backgroundRatingView: UIView!private var isDrew = false //是否创建过
override init(frame: CGRect) {
super.init(frame: frame)
self.buildView()
} -
然后在XIB或Storyboard里面,拖一个UIView上去,把class改成自己定义的RatingBar
-
-
这样更方便我们使用较复杂的控件是设置属性,希望以后可以多借鉴使用。