// 实现图片的旋转和移动和放大缩小
#import "ViewController.h"
@interface ViewController ()
@property (nonatomic, weak) UIButton *_btnImage;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
/** 头像图片 */
// 设置按钮为自定义样式
UIButton *btnImage = [UIButton buttonWithType:UIButtonTypeCustom];
// 设置位置和尺寸
btnImage.frame = CGRectMake(50, 50, 284, 312);
// 高光
// 设置文字及对应状态
[btnImage setTitle:@"高光啊。。。。" forState:UIControlStateHighlighted];
// 设置文字颜色及对应状态
[btnImage setTitleColor:[UIColor greenColor] forState:UIControlStateHighlighted];
// 设置文字样式和大小
btnImage.titleLabel.font = [UIFont fontWithName:nil size:35.0];
[btnImage setBackgroundImage:[UIImage imageNamed:@"biaoqingdi"] forState:UIControlStateHighlighted];
// 普通
[btnImage setTitle:@"普通啊。。。。" forState:UIControlStateNormal];
[btnImage setTitleColor:[UIColor yellowColor] forState:UIControlStateNormal];
[btnImage setBackgroundImage:[UIImage imageNamed:@"chiniupa"] forState:UIControlStateNormal];
[self.view addSubview:btnImage];
// 方面以后使用或修改控件属性
self._btnImage = btnImage;
/** 左旋转 */
UIButton *btnLeftRotate = [UIButton buttonWithType:UIButtonTypeCustom];
btnLeftRotate.frame = CGRectMake(285, 400, 50, 50);
[btnLeftRotate setImage:[UIImage imageNamed:@"left_rotate_normal"] forState:UIControlStateNormal];
[btnLeftRotate setImage:[UIImage imageNamed:@"left_rotate_highlighted"] forState:UIControlStateHighlighted];
[self.view addSubview:btnLeftRotate];
[btnLeftRotate addTarget:self action:@selector(btnRotate:) forControlEvents:UIControlEventTouchUpInside];
[btnLeftRotate setTag:1];
/** 右旋转 */
UIButton *btnRightRotate = [UIButton buttonWithType:UIButtonTypeCustom];
btnRightRotate.frame =CGRectMake(285, 500, 50, 50);
[btnRightRotate setImage:[UIImage imageNamed:@"right_rotate_normal"] forState:UIControlStateNormal];
[btnRightRotate setImage:[UIImage imageNamed:@"right_rotate_highlighted"] forState:UIControlStateHighlighted];
[self.view addSubview:btnRightRotate];
[btnRightRotate addTarget:self action:@selector(btnRotate:) forControlEvents:UIControlEventTouchUpInside];
[btnRightRotate setTag:2];
/** 向上移动 */
UIButton *btnUp = [UIButton buttonWithType:UIButtonTypeCustom];
btnUp.frame = CGRectMake(100, 400, 50, 50);
[btnUp setImage:[UIImage imageNamed:@"top_normal"] forState:UIControlStateNormal];
[btnUp setImage:[UIImage imageNamed:@"top_highlighted"] forState:UIControlStateHighlighted];
[self.view addSubview:btnUp];
[btnUp setTag:1];
[btnUp addTarget:self action:@selector(btnRun:) forControlEvents:UIControlEventTouchUpInside];
/** 向左移动 */
UIButton *btnLeft = [UIButton buttonWithType:UIButtonTypeCustom];
btnLeft.frame = CGRectMake(50, 450, 50, 50);
[btnLeft setImage:[UIImage imageNamed:@"left_normal"] forState:UIControlStateNormal];
[btnLeft setImage:[UIImage imageNamed:@"left_highlighted"] forState:UIControlStateHighlighted];
[self.view addSubview:btnLeft];
[btnLeft setTag:2];
[btnLeft addTarget:self action:@selector(btnRun:) forControlEvents:UIControlEventTouchUpInside];
/** 向右移动 */
UIButton *btnRight = [UIButton buttonWithType:UIButtonTypeCustom];
btnRight.frame = CGRectMake(150, 450, 50, 50);
[btnRight setImage:[UIImage imageNamed:@"right_normal"] forState:UIControlStateNormal];
[btnRight setImage:[UIImage imageNamed:@"right_highlighted"] forState:UIControlStateHighlighted];
[self.view addSubview:btnRight];
[btnRight setTag:3];
[btnRight addTarget:self action:@selector(btnRun:) forControlEvents:UIControlEventTouchUpInside];
/** 向下移动 */
UIButton *btnDown = [UIButton buttonWithType:UIButtonTypeCustom];
btnDown.frame = CGRectMake(100, 500, 50, 50);
[btnDown setImage:[UIImage imageNamed:@"bottom_normal"] forState:UIControlStateNormal];
[btnDown setImage:[UIImage imageNamed:@"bottom_highlighted"] forState:UIControlStateHighlighted];
[self.view addSubview:btnDown];
[btnDown setTag:4];
[btnDown addTarget:self action:@selector(btnRun:) forControlEvents:UIControlEventTouchUpInside];
/** 放大 */
UIButton *btnBig = [UIButton buttonWithType:UIButtonTypeCustom];
btnBig.frame = CGRectMake(100, 600, 50, 50);
[btnBig setImage:[UIImage imageNamed:@"plus_normal"] forState:UIControlStateNormal];
[btnBig setImage:[UIImage imageNamed:@"plus_highlighted"] forState:UIControlStateHighlighted];
[self.view addSubview:btnBig];
[btnBig setTag:1];
[btnBig addTarget:self action:@selector(btnFiex:) forControlEvents:UIControlEventTouchUpInside];
/** 缩小 */
UIButton *btnSmall = [UIButton buttonWithType:UIButtonTypeCustom];
btnSmall.frame = CGRectMake(285, 600, 50, 50);
[btnSmall setImage:[UIImage imageNamed:@"minus_normal"] forState:UIControlStateNormal];
[btnSmall setImage:[UIImage imageNamed:@"minus_highlighted"] forState:UIControlStateHighlighted];
[self.view addSubview:btnSmall];
[btnSmall setTag:2];
[btnSmall addTarget:self action:@selector(btnFiex:) forControlEvents:UIControlEventTouchUpInside];
}
// 旋转
- (void) btnRotate: (UIButton *) btn
{
switch (btn.tag) {
case 1:
// __btnImage等同于self._btnImage
// 负数角度为向左旋转角度
// 这个方法一样的效果:__btnImage.transform = CGAffineTransformMakeRotation(-M_PI_4);
__btnImage.transform = CGAffineTransformRotate(__btnImage.transform, -M_PI_4);
break;
case 2:
// 正数角度为向右旋转角度
self._btnImage.transform = CGAffineTransformRotate(self._btnImage.transform, M_PI_4);
}
}
// 移动
- (void) btnRun: (UIButton *) btn
{
switch (btn.tag) {
case 1:
// 每次向上移动的距离
// 这个方法一样的效果:self._btnImage.transform = CGAffineTransformMakeTranslation(0, -30);
self._btnImage.transform = CGAffineTransformTranslate(self._btnImage.transform, 0, -30);
break;
case 2:
// 每次向左移动30的距离
self._btnImage.transform = CGAffineTransformTranslate(self._btnImage.transform, -30, 0);
break;
case 3:
// 每次向右移动30的距离
self._btnImage.transform = CGAffineTransformTranslate(self._btnImage.transform, 30, 0);
break;
case 4:
// 每次向下移动30的距离
self._btnImage.transform = CGAffineTransformTranslate(self._btnImage.transform, 0, 30);
break;
}
}
// 放大和缩小
- (void) btnFiex:(UIButton *) btn
{
switch (btn.tag) {
case 1:
// 每次放大1.5倍
// 这个方法一样的效果:self._btnImage.transform = CGAffineTransformMakeScale(1.5, 1.5);
self._btnImage.transform = CGAffineTransformScale(self._btnImage.transform, 1.5, 1.5);
break;
case 2:
// 每次缩小0.5倍
self._btnImage.transform = CGAffineTransformScale(self._btnImage.transform, 0.5, 0.5);
break;
}
}
@end