这是我的第一个项目,虽说是接手别人的,但是也很激动的说.
在项目中,需要改需求,要计算下载速度,其中用到了使用表盘的形式展示当前网速,里面当然就用到了图片的旋转.
代码如下:
- (void)viewDidLoad {
[super viewDidLoad];
//使用NSTimer控制旋转
timer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(transform) userInfo:nil repeats:YES];
[self addViews];
}
- (void)addViews{
networkSpeedometer = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pan"]];
networkSpeedometer.frame = CGRectMake(0, WIDTH(125), WIDTH(320), WIDTH(156));
[self.view addSubview:networkSpeedometer];
networkPoint = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"zhen_cz"]];
//指定了旋转的部位,也就是旋转的支点
networkPoint.layer.anchorPoint = CGPointMake(WIDTH(122 - 7)/ WIDTH(122), 0.5);
networkPoint.frame = CGRectMake(WIDTH(45), WIDTH(156 - 33), WIDTH(122), WIDTH(14));
[networkSpeedometer addSubview:networkPoint];
}
//旋转的方法
- (void)transform{
angle = angle + 0.01;//angle旋转的角度,随着NSTimer增大
if (angle >= M_PI_2) {
//当angle增加到M_PI_2也就是90°的时候,让NSTimer停止
timer.fireDate = [NSDate distantFuture];
[timer invalidate];
return;
}
networkPoint.transform = CGAffineTransformMakeRotation(angle);
}
效果图:
注意:其中定义的宏WIDTH 为#define WIDTH(i) (1.0*[UIScreen mainScreen].bounds.size.width/320*(i)) 这个定义的宏,可以很方便的让你设置的frame可以适应各个iPhone端