這是我的第一個項目,雖說是接手別人的,但是也很激動的說.
在項目中,需要改需求,要計算下載速度,其中用到了使用表盤的形式展示當前網(wǎng)速,里面當然就用到了圖片的旋轉(zhuǎn).
代碼如下:
- (void)viewDidLoad {
[super viewDidLoad];
//使用NSTimer控制旋轉(zhuǎn)
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"]];
//指定了旋轉(zhuǎn)的部位,也就是旋轉(zhuǎn)的支點
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];
}
//旋轉(zhuǎn)的方法
- (void)transform{
angle = angle + 0.01;//angle旋轉(zhuǎn)的角度,隨著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)) ?這個定義的宏,可以很方便的讓你設(shè)置的frame可以適應(yīng)各個iPhone端