swift星星评分控件

作者: 宁静1致远 | 来源:发表于2016-09-20 18:14 被阅读839次

    项目中用到好多星星评分,整理了一下给大家分享下


    星星.png

    我封装了一个类,以适应星星评分的各种情况。下面直接上代码

    1、调用类使用

    1.1 创建

    //let starView = JNStarRateView.init(frame: CGRect(x: 20,y: 60,width: 300,height: 50))//默认的是5颗星,分数为0分
    let starView = JNStarRateView.init(frame: CGRect(x: 20,y: 60,width: 300,height: 50), starCount: 6, score: 3.0)
    self.view.addSubview(starView)
    

    1.2关闭用户操作,默认是开启的

    starView.userInteractionEnabled = false//不支持用户操作
    

    1.3支持滑动评分,默认是点击评分

    starView.allowUserPan = true//滑动评星
    

    1.4只支持完整星星评分,默认是一分等于一颗星,允许0.1颗星

     starView.allowUnderCompleteStar = false // 完整星星
    

    1.5支持动画,默认是不支持

    starView.usePanAnimation = true
    

    1.6通过协议代理返回评分后的分数,别忘记了准守协议哦

    starView.delegate = self
    func starRate(view starRateView: JNStarRateView, score: Float) {
            print(score)
        }
    

    2、类源码实现原理

    通过在星星view里创建两个view

        private var starBackgroundView:UIView!
        private var starForegroundView:UIView!
    

    在view里通过循环创建单个星星

    //添加星星
            let width = self.frame.size.width / CGFloat(count)
            for index in 0...count {
                let imageView = UIImageView.init(frame: CGRect(x:CGFloat(index) * width,y: 0,width:width,height:self.bounds.size.height))
                imageView.image = UIImage(named: imageName)
                starView.addSubview(imageView)
            }
    

    再通过重设starForegroundView的frame来实现星星评分,是不是很简单,下面附上github上的代码demo(swift3.0写的,如运行不了,请升级到Xcode8):https://github.com/yinjining/JNStarRateView

    相关文章

      网友评论

      本文标题:swift星星评分控件

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