ios第一天

來源:互聯網
上載者:User

標籤:

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第一天

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.