iOS開發UI篇—Button基礎

iOS開發UI篇—Button基礎git

1、簡單說明程序員

通常狀況下,點擊某個控件後,會作出相應反應的都是按鈕post

按鈕的功能比較多,既能顯示文字,又能顯示圖片,還能隨時調整內部圖片和文字的位置動畫

2、按鈕的三種狀態atom

normal(普通狀態)spa

默認狀況(Default)code

對應的枚舉常量:UIControlStateNormalorm

 

highlighted(高亮狀態)對象

按鈕被按下去的時候(手指還未鬆開)blog

對應的枚舉常量:UIControlStateHighlighted

 

disabled(失效狀態,不可用狀態)

若是enabled屬性爲NO,就是處於disable狀態,表明按鈕不能夠被點擊

對應的枚舉常量:UIControlStateDisabled

 

3、注意點

(1)從Xcode5開始,圖片資源都放到Images.xcassets中進行管理,可使用拖拽的方式添加項目中用到的圖片到Images.xcassets中

(2)若干多個控件共用一段代碼,一般使用tag。

4、代碼示例

(1)

複製代碼

#import "LFViewController.h"

@interface LFViewController ()

@property (weak, nonatomic) IBOutlet UIButton *headImageView;

@end

@implementation LFViewController

// 在OC中,絕大多數的控件的監聽方法的第一個參數就是控件自己
//- (IBAction)left:(UIButton *)button {
//
// NSLog(@"----");
//}
- (IBAction)move
{
// 經過frame修改head的位置
// 在OC中,不容許直接修改「對象」的「結構體屬性」的「成員」
// 容許修改「對象」的「結構體屬性」
// 1. 取出結構體屬性
CGRect rect = self.headImageView.frame;
// 2. 修改結構體成員
rect.origin.y -= 20;
// 3. 設置對象的結構體屬性
self.headImageView.frame = rect;
}

複製代碼

(2)

複製代碼

#import "LFViewController.h"

/**
使用git

1. 建立項目時,勾選git
2. 開發告一段落後,選擇"Source Control""Commit",並編寫註釋
*/


// 枚舉類型實質上就是一個整數,做用就是用來替代魔法數字
// 枚舉類型中,指定了第一個整數以後,後面的數字會遞增
typedef enum
{
kMovingDirTop = 10,
kMovingDirBottom,
kMovingDirLeft,
kMovingDirRight,
} kMovingDir;

#define kMovingDelta 50

@interface LFViewController ()

@property (weak, nonatomic) IBOutlet UIButton *headImageView;

@end

@implementation LFViewController

- (IBAction)move:(UIButton *)button
{
// CGRect rect = self.headImageView.frame;
CGPoint p = self.headImageView.center;

// magic number魔法數字,其餘程序員看到代碼的時候,不知道是什麼意思
switch (button.tag) {
case kMovingDirTop:
p.y -= kMovingDelta;
break;
case kMovingDirBottom:
p.y += kMovingDelta;
break;
case kMovingDirLeft:
p.x -= kMovingDelta;
break;
case kMovingDirRight:
p.x += kMovingDelta;
break;
}

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];

self.headImageView.center = p;

[UIView commitAnimations];
}

- (IBAction)zoom:(UIButton *)button
{
CGRect rect = self.headImageView.bounds;

// 在C語言中,關於bool的判斷:非零即真
if (button.tag) {
rect.size.width += 50;
rect.size.height += 50;
} else {
rect.size.width -= 50;
rect.size.height -= 50;
}

// 首尾動畫
// beginAnimations表示此後的代碼要「參與到」動畫中
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2.0];

self.headImageView.bounds = rect;
// self.headImageView.alpha = 0;

// commitAnimations,將beginAnimation以後的全部動畫提交併生成動畫
[UIView commitAnimations];
}

@end

 
  
複製代碼

 

5、補充筆記

1. IBAction的參數

- (IBAction)left:(UIButton *)button

(1) 在OC中,絕大多數的控件監聽方法的第一個參數就是控件自己

(2) 默認連線時的參數類型是id

(3) 若是要在監聽方法中,方便控件的使用,能夠在連線時或者連線後,修改監聽方法的參數類型

 

2. 修改對象的結構體成員

在OC中,不容許直接修改「對象」的「結構體屬性」的「成員」,可是容許修改「對象」的「結構體屬性」

修改結構體屬性的成員方法以下:

(1)使用臨時變量記錄對象的結構體屬性

(2) 修改臨時變量的屬性

(3)將臨時變量從新設置給對象的結構體屬性

 

3. 在程序開發中須要避免出現魔法數字(Magic Number)

使用枚舉類型,能夠避免在程序中出現魔法數字

(1)枚舉類型實質上就是一個整數,其做用就是用來替代魔法數字

(2)枚舉類型中,指定了第一個整數以後,後面的數字會遞增

 

4. frame & bounds & center

1> frame能夠修改對象的位置和尺寸

2> bounds能夠修改對象的尺寸

3> center能夠修改對象的位置

 

5. 首尾式動畫

// beginAnimations表示此後的代碼要「參與到」動畫中

[UIView beginAnimations:nil context:nil];

// setAnimationDuration用來指定動畫持續時間

[UIView setAnimationDuration:2.0];

self.headImageView.bounds = rect;

......

// commitAnimations,將beginAnimation以後的全部動畫提交併生成動畫

[UIView commitAnimations];

相關文章
相關標籤/搜索