美文网首页
Swift 中的 IBDesignable/IBInspect

Swift 中的 IBDesignable/IBInspect

作者: 令狐灵犀 | 来源:发表于2016-11-21 11:07 被阅读144次
    • IBDesignable/IBInspectable,是iOS8的新特性。其主要功能是可以直接在XIB或者Storyboard中直接,设置UI类的属性。例如我们自定义一些控件,可以把控件的属性映射到XIB上。

    • 下面是控件的例子,更直观的将IBDesignable/IBInspectable的作用显现出来。

      1. 首先我们新建一个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()
        }

      2. 然后在XIB或Storyboard里面,拖一个UIView上去,把class改成自己定义的RatingBar

    • 这样更方便我们使用较复杂的控件是设置属性,希望以后可以多借鉴使用。

    相关文章

      网友评论

          本文标题: Swift 中的 IBDesignable/IBInspect

          本文链接:https://www.haomeiwen.com/subject/qjhupttx.html