IOS上实现的自定义仪表盘示例

  

今天给大家带来一个自定义的仪表盘,效果图如下。

  

 IOS上实现的自定义仪表盘示例

  

演示中用到了QuartzCore类首先继承一个UIView。
  

     //Gauge.h//GaugeDemo////由海锋周>//Gauge.m//GaugeDemo////由海锋周在12-3-27。//版权(c) 2012年CJLU。保留所有权利。//#进口“Gauge.h”   # import & lt; QuartzCore/QuartzCore.h>      #定义MAXOFFSETANGLE 120.0 f   #定义POINTEROFFSET 90.0 f   #定义MAXVALUE 120.0 f   #定义CELLMARKNUM 5   #定义CELLNUM 12   #定义GAUGESTRING @”单位:Km/h”   #定义DEFLUATSIZE 300/************************************************   仪表盘的大小不建议设置的太小。   长宽都是300是最适合的   如果要更小的需要自行修改刻度长度和文字大小   ——动力周海锋   2012-3-29   ***********************************************/@ implementation规      @ interface计(私有)   ——(CGFloat) parseToX:(CGFloat)半径角度:(CGFloat)角;   ——(CGFloat) parseToY:(CGFloat)半径角度:(CGFloat)角;   ——(CGFloat) transToRadian:(CGFloat)天使;   ——(CGFloat) parseToAngle:瓦尔(CGFloat);   ——(CGFloat) parseToValue:瓦尔(CGFloat);   - (void) setTextLabel: (NSInteger) labelNum;   - (void) setLineMark: (NSInteger) labelNum;   - (void) pointToAngle: (CGFloat)角:持续时间(CGFloat)持续时间;   @end      @ synthesize gaugeView、指针、上下文;   @ synthesize labelArray;      - (id) initWithFrame:(CGRect中)框架   {   自我=(超级initWithFrame:框架);   如果(自我){//设置背景透明   (自我setBackgroundColor:(用户界面颜色clearColor]];      scoleNum=DEFLUATSIZE/frame.size.width;   maxNum=MAXVALUE;   minNum f=0.0;   minAngle=-MAXOFFSETANGLE;   maxAngle=MAXOFFSETANGLE;   gaugeValue=https://www.yisu.com/zixun/0.0f;   gaugeAngle=-MAXOFFSETANGLE;   angleperValue=(maxAngle - minAngle)/(maxNum - minNum);      gaugeView=[界面图像imageNamed: @“gaugeback.png”);//添加指针   用户界面图像* _pointer=[界面图像imageNamed: @“pointer2.png”);   指针=[[UIImageView alloc] initWithImage _pointer):;   pointer.layer。anchorPoint=CGPointMake (0.5, 0.78);   指针。中心=self.center;   指针。变换=CGAffineTransformMakeScale (scoleNum scoleNum);   (自我addSubview:指针);//设置文字标签   (自我setTextLabel: CELLNUM);//设置指针到0位置   pointer.layer。变换=CATransform3DMakeRotation(自我transToRadian: -MAXOFFSETANGLE, 0, 0, 1);   }   回归自我;   }/*   * setTextLabel绘制刻度值   * @labelNum NSInteger刻度值的数目   */- (void) setTextLabel: labelNum (NSInteger)   {   labelArray=[NSMutableArray arrayWithCapacity labelNum):;      CGFloat textDis=(maxNum - minNum)/labelNum;   CGFloat angelDis=(maxAngle - minAngle)/labelNum;   CGFloat=(self.center半径。x - 75) * scoleNum;   CGFloat currentAngle;   CGFloat currentText f=0.0;   CGPoint中心=self.center;      for (int i=0; i<=labelNum;我+ +)   {   currentAngle=minAngle + i * angelDis - POINTEROFFSET;   currentText=minNum + i * textDis;   UILabel *标签=[[UILabel alloc] initWithFrame: CGRectMake (0, 0, 30、50)];   标签。autoresizesSubviews=是的;   标签。输入textColor=[用户界面颜色whiteColor];   标签。写成backgroundColor=[用户界面颜色clearColor];//设置刻度的文字的格式   如果(i labelNum * 2/3)   {   CGContextSetStrokeColorWithColor(上下文,[[用户界面颜色colorWithRed: 1格林:蓝色:0 0α:0.8]CGColor]);   }else if (i> labelNum * 1/3) {   CGContextSetStrokeColorWithColor(上下文,[[用户界面颜色colorWithRed: 1格林:1蓝色:0α:0.8]CGColor]);   其他}{   CGContextSetStrokeColorWithColor(上下文,[[用户界面颜色colorWithRed: 0格林:1蓝色:0α:0.8]CGColor]);   }//绘制不同的长短的刻度   如果(我% 5==0)   {   CGContextSetLineCap(上下文,kCGLineCapSquare);   CGContextSetLineWidth(上下文,3);   CGContextStrokePath(上下文);   CGContextMoveToPoint(上下文,中心。x +(自我parseToX: radius-25 * scoleNum角度:currentAngle],中心。y +(自我parseToY: radius-25 * scoleNum角度:currentAngle]);   CGContextAddLineToPoint(上下文,中心。x +[自我parseToX:半径- 65 * scoleNum角度:currentAngle],中心。y +[自我parseToY:半径- 65 * scoleNum角度:currentAngle]);   其他}{   CGContextSetLineWidth(上下文,2);   CGContextSetLineCap(上下文,kCGLineCapSquare);   CGContextStrokePath(上下文);   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

IOS上实现的自定义仪表盘示例