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
-
-
这样更方便我们使用较复杂的控件是设置属性,希望以后可以多借鉴使用。
Swift 中的 IBDesignable/IBInspectable
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 添加对Interface Builder的支持 如果你在Interface Builder中看rating控件,你...
- http://www.cocoachina.com/cms/wap.php?action=article&id=1...
- 因为要结局swift3.0中引用snapKit的问题,看到一篇介绍Xcode8,swift3变化的文章,觉得很详细...