做一个不断旋转的View简单,但是怎样让UIBarButtonItem旋转起来呢。
一、先说一下需求:
1.做一个RightBarButtonItem不断旋转的Demo;
2.点击RightBarButtonItem 按钮旋转或暂停;
三、关键代码展示(已加注释):
//
// ViewController.m
// NavigationBtn
//
// Created by Lves Li on 15/3/1.
// Copyright (c) 2015年 Lves. All rights reserved.
//
#import "ViewController.h"
#define DEGREES_TO_RADIANS(angle) ((angle) / 180.0 * M_PI)
///ImageView旋转状态枚举
typedef enum {
RotateStateStop,
RotateStateRunning,
}RotateState;
@interface ViewController ()
{
///旋转角度
CGFloat imageviewAngle;
///旋转ImageView
UIImageView *imageView;
///旋转状态
RotateState rotateState;
}
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.title=@"微信公众账号:乐Coding";
[self buildBarButtonItem];
}
#pragma mark 添加 RightBarButtonItem
-(void)buildBarButtonItem{
imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon"]];
imageView.autoresizingMask = UIViewAutoresizingNone;
imageView.contentMode = UIViewContentModeScaleToFill;
imageView.bounds=CGRectMake(0, 0, 40, 40);
//设置视图为圆形
imageView.layer.masksToBounds=YES;
imageView.layer.cornerRadius=20.f;
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0, 0, 40, 40);
[button addSubview:imageView];
[button addTarget:self action:@selector(animate) forControlEvents:UIControlEventTouchUpInside];
imageView.center = button.center;
//设置RightBarButtonItem
UIBarButtonItem *barItem = [[UIBarButtonItem alloc] initWithCustomView:button];
self.navigationItem.rightBarButtonItem = barItem;
}
#pragma mark 点击 RightBarButtonItem
- (void)animate {
//改变ImageView旋转状态
if (rotateState==RotateStateStop) {
rotateState=RotateStateRunning;
[self rotateAnimate];
}else{
rotateState=RotateStateStop;
}
}
#pragma mark 旋转动画
-(void)rotateAnimate{
imageviewAngle+=50;
//0.5秒旋转50度
[UIView animateWithDuration:0.5 delay:0.0 options:UIViewAnimationOptionCurveLinear animations:^{
imageView.transform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(imageviewAngle));
} completion:^(BOOL finished) {
if (rotateState==RotateStateRunning) {
[self rotateAnimate];
}
}];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end