所有的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);