1)使用相應的控件類建立控件對象;html
2)設置該控件的各類屬性;ide
3)添加空間到視圖中;動畫
4)若是是 UIButton 等控件,還需考慮控件的單擊事件等;atom
[topbtn addTarget:self action:@selector(move:) forControlEvents:UIControlEventTouchUpInside]; spa
1) addTarget:forControlEvents: 方法定義在 UIControl 類中,意味着全部繼承自 UIControl 類的對象都可添加;3d
2)第一個參數爲對象自己;code
3)第二個參數爲監聽控件的事件。orm
1 @interface ViewController () 2 @property (nonatomic, weak) IBOutlet UIButton *headImageView; //被控制用於移動的按鈕 3 @end
//手工添加上下左右、放大縮小按鈕
1 - (void)viewDidLoad { 2 [super viewDidLoad]; 3 //設置按鈕對象爲自定義型 4 UIButton *headbtn = [UIButton buttonWithType:UIButtonTypeCustom]; 5 //設置按鈕對象普通狀態下的各項屬性 6 headbtn.frame = CGRectMake(100, 100, 100, 100); 7 [headbtn setBackgroundImage:[UIImage imageNamed:@"beauty10"] forState:UIControlStateNormal]; 8 [headbtn setTitle:@"點我!" forState:UIControlStateNormal]; 9 [headbtn setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; 10 //設置按鈕對象高亮狀態下的屬性 11 [headbtn setBackgroundImage:[UIImage imageNamed:@"beauty11"] forState:UIControlStateHighlighted]; 12 [headbtn setTitle:@"還行吧~~" forState:UIControlStateHighlighted]; 13 [headbtn setTitleColor:[UIColor blueColor] forState:UIControlStateHighlighted]; 14 //將按鈕對象添加到視圖中顯示出來 15 [self.view addSubview:headbtn]; 16 self.headImageView = headbtn; //創建IBOutlet鏈接 17 18 //向上移動的按鈕 19 UIButton *topbtn = [UIButton buttonWithType:UIButtonTypeCustom]; 20 topbtn.frame = CGRectMake(100, 250, 40, 40); 21 [topbtn setTitle:@"上移" forState:UIControlStateNormal]; 22 [topbtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal]; 23 [topbtn setTag:1]; 24 [self.view addSubview:topbtn]; 25 //添加按鈕的單擊事件 26 [topbtn addTarget:self action:@selector(move:) forControlEvents:UIControlEventTouchUpInside]; 27 28 //向下移動的按鈕 29 UIButton *downbtn = [UIButton buttonWithType:UIButtonTypeCustom]; 30 downbtn.frame = CGRectMake(100, 350, 40, 40); 31 [downbtn setTitle:@"下移" forState:UIControlStateNormal]; 32 [downbtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal]; 33 [downbtn setTag:2]; 34 [self.view addSubview:downbtn]; 35 //添加按鈕的單擊事件 36 [downbtn addTarget:self action:@selector(move:) forControlEvents:UIControlEventTouchUpInside]; 37 38 //向左移動的按鈕 39 UIButton *leftbtn = [UIButton buttonWithType:UIButtonTypeCustom]; 40 leftbtn.frame = CGRectMake(50, 300, 40, 40); 41 [leftbtn setTitle:@"左移" forState:UIControlStateNormal]; 42 [leftbtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal]; 43 [leftbtn setTag:3]; 44 [self.view addSubview:leftbtn]; 45 //添加按鈕的單擊事件 46 [leftbtn addTarget:self action:@selector(move:) forControlEvents:UIControlEventTouchUpInside]; 47 48 //向右移動的按鈕 49 UIButton *rightbtn = [UIButton buttonWithType:UIButtonTypeCustom]; 50 rightbtn.frame = CGRectMake(150, 300, 40, 40); 51 [rightbtn setTitle:@"右移" forState:UIControlStateNormal]; 52 [rightbtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal]; 53 [rightbtn setTag:4]; 54 [self.view addSubview:rightbtn]; 55 //添加按鈕的單擊事件 56 [rightbtn addTarget:self action:@selector(move:) forControlEvents:UIControlEventTouchUpInside]; 57 58 //放大的按鈕 59 UIButton *zoombtn = [UIButton buttonWithType:UIButtonTypeCustom]; 60 zoombtn.frame = CGRectMake(75, 400, 40, 40); 61 [zoombtn setTitle:@"放大" forState:UIControlStateNormal]; 62 [zoombtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal]; 63 [zoombtn setTag:0]; 64 [self.view addSubview:zoombtn]; 65 //添加按鈕的單擊事件 66 [zoombtn addTarget:self action:@selector(zoom:) forControlEvents:UIControlEventTouchUpInside]; 67 68 //縮小的按鈕 69 UIButton *minusbtn = [UIButton buttonWithType:UIButtonTypeCustom]; 70 minusbtn.frame = CGRectMake(125, 400, 40, 40); 71 [minusbtn setTitle:@"縮小" forState:UIControlStateNormal]; 72 [minusbtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal]; 73 [minusbtn setTag:1]; 74 [self.view addSubview:minusbtn]; 75 //添加按鈕的單擊事件 76 [minusbtn addTarget:self action:@selector(zoom:) forControlEvents:UIControlEventTouchUpInside]; 77 }
先聲明上下左右移動的枚舉類型,及移動或放大縮小的常量值:htm
1 //ViewController.m 2 typedef NS_ENUM(NSUInteger, kMovingDir) 3 { 4 kMovingDirTop = 1, 5 kMovingDirButtom, 6 kMovingDirLeft, 7 kMovingDirRight, 8 }; 9 10 CGFloat const kMovingDelta = 50.0; //移動係數 11 CGFloat const kZoomingDelta = 50.0; //放大縮小系數
實現按鈕的事件:對象
1 - (void)move:(id)sender { 2 UIButton *button = (UIButton *)sender; 3 4 CGPoint p = self.headImageView.center; 5 switch (button.tag) { 6 case kMovingDirTop: p.y -= kMovingDelta; break; //往上移動 7 case kMovingDirButtom: p.y += kMovingDelta; break; //往下移動 8 case kMovingDirLeft: p.x -= kMovingDelta; break; //往左移動 9 case kMovingDirRight: p.x += kMovingDelta; break; //往右移動 10 } 11 12 [UIView beginAnimations:nil context:nil]; 13 [UIView setAnimationDuration:2.0]; 14 self.headImageView.center = p; 15 [UIView commitAnimations]; 16 } 17 18 - (void)zoom:(id)sender { 19 UIButton *button = (UIButton *)sender; 20 21 CGRect rect = self.headImageView.bounds; 22 if (button.tag) { //縮小 23 rect.size.width -= kZoomingDelta; 24 rect.size.height -= kZoomingDelta; 25 } else { //放大 26 rect.size.width += kZoomingDelta; 27 rect.size.height += kZoomingDelta; 28 } 29 30 [UIView beginAnimations:nil context:nil]; 31 [UIView setAnimationDuration:2.0]; 32 self.headImageView.bounds = rect; 33 [UIView commitAnimations]; 34 }
示圖以下:
示例代碼:http://pan.baidu.com/s/1i3SainN
1)開始動畫;
2)設置動畫相關的參數,如時間等;
3)參與動畫的行動
4)提交動畫。
示例代碼以下:
1 [UIView beginAnimations:nil context:nil]; 2 [UIView setAnimationDuration:2.0]; 3 self.headImageView.bounds = rect; 4 [UIView commitAnimations];