所有的UI控件最終都繼承自UIView,UI控件的公共屬性都定義在UIView中,
UIView
的常見屬性
UIView *superview; 獲得自己的父控件對象
NSArray *subviews; 獲得自己的所有子控件對象
NSInteger tag; 控件的ID(標識),父控件可以通過tag來找到對應的子控件
CGAffineTransform transform;
控件的形變屬性(可以設置旋轉角度、比例縮放、平移等屬性)
CGRect frame;
控件所在矩形框在父控件中的位置和尺寸(以父控件的左上角為坐標原點)
CGRect bounds;
控件所在矩形框的位置和尺寸(以自己左上角為坐標原點,所以bounds的x、y一般為0)
CGPoint center;
控件中點的位置(以父控件的左上角為坐標原點)
常用的Button狀態
normal(普通狀態)
默認情況(Default)
對應的枚舉常量:UIControlStateNormal
highlighted(高亮狀態)
按鈕被按下去的時候(手指還未松開)
對應的枚舉常量:UIControlStateHighlighted
disabled(失效狀態,不可用狀態)
如果enabled屬性為NO,就是處於disable狀態,代表按鈕不可以被點擊
對應的枚舉常量:UIControlStateDisabled
不同狀態,可以設置Button不同的屬性(顏色,文字,背景圖片等)
修改控件位置
通過修改控件的frame屬性就可以修改控件在屏幕上的位置和尺寸
通過以下屬性可以修改控件的位置
frame.origin
center
通過
frame.size
bounds.size
屬性可以修改控件的尺寸
// 比如點擊“向上”按鈕,讓按鈕的y值減小即可
- (IBAction)top:(UIButton *)sender {
CGRect btnFrame = self.headBtn.frame;
btnFrame.origin.y -= 10;
self.headBtn.frame = btnFrame;
}
// 下面代碼是錯誤的,OC語法規定:不允許直接修改對象的結構體屬性的成員
self.headBtn.frame.origin.y -= 10;
通過
屬性可以修改控件的位置、尺寸不需要計算形變之后的結果
代碼添加控件
// 創建一個自定義的按鈕 UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; // 默認狀態的背景 [btn setBackgroundImage:[UIImage imageNamed:@"btn_01"] forState:UIControlStateNormal]; // 默認狀態的文字 [btn setTitle:@"點我啊" forState:UIControlStateNormal]; // 默認狀態的文字顏色(有哪些顏色可以直接點UIColor頭文件查看) [btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
例如:
// 視圖加載完成調用的方法,通常視圖控制器的初始化工作,在此執行!
// 一定不要忘記調用父類的實現方法
- (void)viewDidLoad // 此方法是繼承自父類的方法
{
[super viewDidLoad];
// 創建按鈕控件
UIButton *btn = [[UIButton alloc] init];
// 設置控件的位置
btn.frame = CGRectMake(20, 20, 100, 100);
// btn.backgroundColor = [UIColor redColor];
// 設置控件的文字
[btn setTitle:@"按鈕" forState:UIControlStateNormal];
// 設置控件文字的顏色
[btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
UIImage *image = [UIImage imageNamed:@"btn_01"];
[btn setBackgroundImage:image forState:UIControlStateNormal];
[btn setTitle:@"點我" forState:UIControlStateNormal];
// 設置按鈕控件在普通狀態下的字體顏色
[btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
// 設置按鈕空間在高粱狀態下的背景圖片
[btn setBackgroundImage:[UIImage imageNamed:@"btn_02"] forState:UIControlStateHighlighted];
// 將設置好的按鈕空間添加到當前view中
[self.view addSubview:btn];
// 按鈕的監聽方法
[btn addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];
// 將.h中聲明的屬性headImageView與btn相關聯
self.headImageView = btn;
}
修改大小。角度
// MakeTranslation是基於對象初始位置做的形變
// self.delta -= 20;
// NSLog(@"%d", self.delta);
// self.headImageView.transform = CGAffineTransformMakeTranslation(0, self.delta);
// Translate是基於transform參數做的形變,實際效果就是一個累加的位移效果
self.headImageView.transform = CGAffineTransformTranslate(self.headImageView.transform, 0, -20);
self.headImageView.transform = CGAffineTransformScale(self.headImageView.transform, 2.0, 1.0);
// 在OC中,所有跟角度相關的數值,都是弧度值,180° = M_PI
// 正數表示順時針旋轉
// 負數表示逆時針旋轉
self.headImageView.transform = CGAffineTransformRotate(self.headImageView.transform, -M_PI_4);
