iOS高阶UI相关iOS在路上iOS自定义控件

swift星星评分控件

2016-09-20  本文已影响839人  宁静1致远

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


星星.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

上一篇 下一篇

猜你喜欢

热点阅读