標籤:
tittle button
backgroundRectForBounds
tittleRectForContentRect控制器內部label的frame
imageRectForContentRect// 控制器內部imageView的frame
CGFloat
CGFloat
CGRectMake
點擊一個按鈕,才報錯,死迴圈!!
awakeFromNib
從檔案中解析一個對象時會調用
軟體開發定律:萬物皆對象
UIKit:建立和管理應用程式使用者介面
圖片對象:UIImageView
文字標籤對象:UILabel
按鈕對象:UIButton
利用UIKit架構提供的類來建立各種可視化組建對象,最後組成複雜而美觀的UI介面
提高學習效率:
1.理解思路,尋找規律。
2.下課敲代碼不要看代碼。
3.學習是學問題,不是學答案,學會發現問題,解決問題
一個簡單地加法計算機:
stroyboard檔案:描述介面,左邊的箭頭所指的介面:程式—啟動就會顯示
option鍵,拖
改成數字鍵台:attribute keyboardtype
拖線實現按鈕單擊事件:
能點的都是按鈕!
能輸入文字的是文字框!
UIView所有控制項的祖先(控制項,組建) :作用 1.展示控制項;2. 採集控制項
UIButton, UILabel, UITextField
每一個UIView都是一個容器,能容納其他UIView
UIViewController 作用:
首先建立一個UIViewController, 接著, 建立一個大的UIView
Controller與View的關係:view如何建立, 如何銷毀, 子控制項的一些觸發事件, 這一切有controller來實現。一句話, controller用來管理view的,包括UIview的建立銷毀,UIView與使用者的互動
監聽事件在控制器的類中寫代碼
類擴充
IBAction表示void,但表示能拖線(關聯)了
連線,刪線
獲得文字框中的內容:
拖!!!
controller中的屬性與介面上的控制項相關連 outlet (產生屬性) action產生方法
實現計算功能步驟
!. 擷取使用者的輸入
計算和
把結果顯示在介面上
字串類型轉成int
int n1 = [num1 intValue];
int n1 = num2.intValue;
int -> NSString:
[NSString stringWithFormat:@“@%d”, result];
收回鍵盤操作
firstResponsor第一響應者:鍵盤是誰叫出來的, 那個誰就叫做第一響應者
1.讓第一響應者辭職,鍵盤就縮回去了. 用[num1resignFirstResponder]方法。
2.找到當前控制器控制的view, 讓其內部所有的控制項停止編輯工作。這樣的話,凡是這個view的子控制項叫出的鍵盤就都會去了。[self.view endEditing YES]
self表示當前的viewController, self.view表示當前控制器所管理的那個view
IBAction IBOutlet 相當於void,但能讓我們拖線
子控制項, 父控制項 是容器與其內部控制項的關係
Deployment Target: 當前開發的最低運行版本
Main Interface: 程式啟動時啟動哪個storyboard
Bundle Identifier: 版本
箭頭: 程式啟動時啟動的控制器, (如果沒看到箭頭勾選is initial viewControllor)
程式啟動->配置Main.storyboard->箭頭所指向的controller-> 配置的類名-> 建立controller ->建立view
文字框: placeholder(使用者輸入文字是會自動消失) secure(密碼文字框掩碼顯示)
文字框右邊顯示“清楚”按鈕。Clear Button預設值:Never appears
文字框只能輸入數字:keyboard屬性
按鈕:能顯示文字,圖片,還能隨時調整內部圖片和文字的位置
有UIKIt提供
功能分析:
左下角4個方向按鈕,控制頭像的位置
右下角分別是放大,縮小按鈕,控制頭像的尺寸
頭像按鈕既要有背景圖片,又有文字
步驟分析:
搭建UI介面
監聽按鈕點擊
修改頭像按鈕的屬性來調整位置和尺寸
拖圖片到images.xcassets
按鈕的狀態:高亮,預設狀態
按鈕預設類型是system, 其高亮狀態是灰色。
可以改成custom類型。
拖線:方法2:右擊控制項,選擇事件,連線到代碼的擴充中
擷取button的座標:擷取原始按鈕的frame值(是CGRect的類型,包擴兩個值:point and size, 其中point包擴CGFloat x, CGFloat y, size 包括width, 與height);
CGRect orignFrame = self.btnIcon.frame; //獲得表徵圖的frame
originFrame.origin.y -= 10;// 設定y值
self.btnIcon.frame = originFrame;// 把新的frame在賦值給按鈕
修改控制項座標步驟:
擷取原始的frame值
修改frame
重新把新的frame值賦值給控制項
當oc對象屬性是一個結構體類型, 不能直接修改該屬性的值,規定的
建立size: CGSizeMake() 建立Rect CGRectMake
sender當前所被點的那個按鈕當作參數
任何的控制項都有一個tag屬性來標記該控制項,
使用sender.tag來判斷使用者當前點擊是那個按鈕
擷取原始的frame
修改frame
把修改後的值傳給原始的frame
frame(包含位置和大小x, y表示左上方的座標)CGRect
center(只能修改位置,表示的是控制項中心點的座標)CGSize
bounds(修改大小)CGRect
transform(旋轉)
NSStringFromCGRect();
增加動畫兩種方式
1.頭尾式
1).開啟動畫
[UIView beginAnimations:nil context:nil];
2).設定動畫執行時間
[UIView setAnimationDuration:2];
————中間這裡是要執行的動畫的代碼----------------
3).提交動畫
[UIView commitAnimations]
2.Block式
1).[UIView animateWithDuration:期間 animations:^{
self.btnIcon.frame = orignFrame;
}];
當要顯示一個介面的時候,首先建立這個介面對應的控制器,控制器建立好以後,接著建立控制器所管理的那個view,當這個view載入完畢以後就開始執行下面的方法了。
所以只要viewDidLoad方法被執行了,就表示控制器所管理的view建立好了
動態建立我們自已的按鈕
1.建立按鈕 UIButton *button= [[UIButton alloc]init]
設定按鈕上顯示的文字﹕[button setTitle:@“點我吧” forState:UIControlStateNormal] 預設狀態下的顯示文字
[button setTitle:@“摸我幹啥” forState:UIControlStateHighlighted];
設定預設狀態下的背景圖片
UIImage *imgNormal = [UIImage imageNamed:@“ “];
[button setBackgroundImage:imgNormal forState: UIControlStateNormal];
設定高亮狀態下的背景圖片
[button setBackgroundImage:imgHighlighted forState:UIControlStateHighlighted];
設定不同狀態下的文字顏色
[button setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[button setTitleColor:[UIColor blueColor] forState:UIControlStateHighlighted]
設定按鈕的frame
button.frame=CGRectMake(50, 100, 100, 100);
把動態建立的按鈕加到控制器所管理的那個view中
[self.view addSubview:button]
通過代碼為按鈕註冊一個單擊事件
[button addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];
去除autolayout
1.如果發現通過代碼無法修改控制項的位置或者尺寸時,應該去掉storyboard裡面的autolayout功能,這是自ios6開始出現的特性
2.顧名思義,autolayout是用來自動布局的,用來束?控制項的位置和尺寸,去掉這個功能,控制項的位置和尺寸就不再有一些固定的束?
PNG 格式的圖片格式可以省略
transform屬性可以修改控制項的位移,縮放,旋轉
建立一個transform屬性
CGAffineTransform CGAffineTransformMakeTransaltion(CGFloat tx, CGFloat ty) // 平移
CGAffineTransform CGAffineTransformMakeScale(CGFloat sx, CGFloat sy); // 縮放
CGAffineTransform CGAffineTransformMakeRotation(CGFloat angle)
//旋轉
在某個transform的基礎上進行疊加
CGAffineTransform CGAffineTransformTranslate(CGaffineTransform t, CGFloat tx, CGFloat ty);
CGAffineTransform CGAffineTransformScale(CgAffineTransform t, CgFloat sx, CgFloat sy);
CGAffineTransform CGAffineTransformRotate(CGAffineTransform t, CGFloat angle);
清空之 前設定的transform屬性
view.transform = CGAffineTransformIdentity;
ios第一天