iOS上下文实现评价星星示例代码

  

<强>常规思路:

  

创建两个视图,通过对循环创建imageView,未点亮星星视图在下,点亮星星视图在上重合在一起,当用户点击视图时,通过改变点亮星星视图的宽度实现功能

  

<强>本文思路:

  

直接重写绘制矩形方法,在绘制矩形用drawimage画出星星,根据currentValue画出不同类型的星星,当用户点击视图时,改变currentValue,并根据改变后的currentValue重新画出星星。

  

展示图:

  

 iOS上下文实现评价星星示例代码

  

代码:   

自定义一个继承UIView的CYStarView

  

属性:      /* *完成后执行*/的块   @ property(复制、原子)空(^ completionBlock) (NSInteger);/* *是否可以点击*/@ property(分配、原子)BOOL可点击;/* *星星个数*/@ property(分配、原子)NSInteger numberOfStars;/* *星星边长*/@ property(分配、原子)是CGFloat lengthOfSide;/* *评价值*/@ property(分配、原子)NSInteger currentValue;/* *星星间隔*/@ property(分配、原子)CGFloat间距;      

重写setter方法,在setter方法中调用setNeedsDisplay,会执行绘制矩形:

        - (void) setLengthOfSide: (CGFloat) lengthOfSide {//超过控件高度   如果(lengthOfSide比;self.frame.size.height) {   lengthOfSide=self.frame.size.height;   }//超过控件宽度   如果(lengthOfSide比;self.frame.size.width/_numberOfStars) {   lengthOfSide=self.frame.size.width/_numberOfStars;   }      _lengthOfSide=lengthOfSide;   _spacing=(self.frame.size.width - lengthOfSide * _numberOfStars)/_numberOfStars;      (自我setNeedsDisplay);   }   之前      

在绘制矩形中画星星:

        - (void)绘制矩形:(CGRect中)矩形{      用户界面图像* lightImage=[界面图像imageNamed: @“star_light”);   用户界面图像* darkImage=[界面图像imageNamed: @“star_dark”);//获取当前上下文   CGContextRef上下文=UIGraphicsGetCurrentContext ();      for (int i=0;我& lt;self.numberOfStars;我+ +){//根据currentValue选择是画亮的还是暗的星星   用户界面图像*图像=我在=自我。currentValue & # 63;darkImage: lightImage;   CGRect中imageRect=CGRectMake(自我。间距/2 +(自我。lengthOfSide + self.spacing) *我,(self.frame.size.height - self.lengthOfSide)/2,自我。lengthOfSide self.lengthOfSide);      CGContextSaveGState(上下文);//坐标系Y轴是相反的,进行翻转   CGContextScaleCTM(上下文、1.0 - 1.0);   CGContextTranslateCTM(上下文、0 - rect.origin。y * 2 - rect.size.height);      CGContextDrawImage(上下文、imageRect image.CGImage);   CGContextRestoreGState(上下文);   }   }   之前      

使用:   

在要使用的控制器中:

        #进口“CYStarView.h”//初始化,传入必要参数   CYStarView * starView=[[CYStarView alloc] initWithFrame:帧numberOfStars: lengthOfSide数量:长度);//设置可点击,评论界面设置为是的,展示界面设置为不   self.starView。可点击=是的;////设置completionBlock   self.starView.completionBlock=^ (NSInteger currentValue) {//点击后的操作放这里   };      

项目地址:点我点我!

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

iOS上下文实现评价星星示例代码