IOS 開發筆記-基礎 UI(1)-簡單的計算機,iosui

來源:互聯網
上載者:User

IOS 開發筆記-基礎 UI(1)-簡單的計算機,iosui
(1)UI是App的根基:一個App應該是先有UI介面,然後在UI的基礎上增加實用功能(2)UI相對簡單易學:UI普遍是學習過程中最簡單的一塊,能快速擁有成就感和學習興趣(3)UI至關重要:開發中的絕大部分時間都在處理UI

謹記一條IOS軟體開發定律:萬物皆對象,UI介面上的每一個元素都是一個對象

IOS,android 軟體開發過程

UIKit架構是跟UI有關係的,標籤,文本,按鈕,進度條,開關等控制項,都是封裝在UIKit架構內部的,UIKit架構中提供了豐富多彩的可視化組件元素,利用UIKit架構提供的類來建立各種可視化組件對象,最後組成複雜而美觀的UI介面。 為了方便開發人員開發出強大的功能,蘋果提供了各種各樣的架構(1)UIKit:建立和管理應用程式的使用者介面(2)QuartzCore:提供動畫特效以及通過硬體進行渲染的能力(3)CoreGraphics:提供2D繪製的基於C的API(4)CoreLocation:使用GPS和WIFI擷取位置資訊(5)MapKit:為應用程式提供內嵌地圖的介面(6)AVFoundation:音頻、視頻處理(7)……

在開發過程中需要用到一些特殊功能時,可以先嘗試使用系統內建的架構。

通過一個簡單的計算機的開發,來學習和認識IOS 開發的基礎控制項

分析:(1)添加需要的控制項,搭建UI介面:1個按鈕、3個文字標籤(+,=,還有30的位置處)、2個文本輸入框(2)監聽按鈕的點擊事件(3)取得2個文字框值,將計算好的最終結果顯示到右邊的文字標籤上 什麼是控制項?能在介面上看得到的,可以進行互動的,就是控制項 常用的控制項介紹:UILabel—文字標籤:顯示一串固定的文字UIButton – 按鈕:監聽使用者的點擊事件,在使用者點擊後做出響應 UITextField – 文本輸入框,文本輸入框可以彈出鍵盤,讓使用者輸入常值內容 UIView:螢幕上能看得見摸得著的東西就是UIView,比如螢幕上的按鈕、文字、圖片,一般翻譯叫做:視圖\控制項\組件。UIButton、UILabel、UITextField都繼承自UIView,每一個UIView都是一個容器,能容納其他UIView(比如整個鍵盤是一個UIView,裡面容納很多小格子的數字UIView) 在“加法計算機”中,最後面那塊白色的全屏的東西也是一個UIView,白色的大UIView中容納了很多小的UIView,視圖階層如所示 在白色的大UIView中,容納了6個小UIView(1個UIButton、2個UITextField、3個UILabel),白色的大UIView為6個小UIView的父控制項(父視圖),6個小UIView都是白色大UIView的子控制項(子視圖)。 每一個新的介面都是一個新的UIView,在切換過程中,涉及到了:1、UIView的建立和銷毀2、UIView跟使用者的互動(處理UIView內部每一行的點擊)這是視圖控制器 viewController 的工作,UIView 負責顯示,控制器來控制視圖。每當顯示一個新介面時,首先會建立一個新的UIViewController對象,然後建立一個對應的全屏UIView,UIViewController負責管理這個UIView。UIViewController就是UIView的大管家,負責建立、顯示、銷毀UIView,負責監聽UIView內部的事件,負責處理UIView與使用者的互動。大部分代碼都是寫在控制器。 UIViewController內部有個UIView屬性,就是它負責管理UIView對象 代碼如下:
@property(nonatomic,retain) UIView *view;

 

先進行 UI 設計,使用單視圖頁面進行開發(常用),Single View Application是最適合初學者的模板
項目建立完畢後,Xcode自動幫我們做了很多配置,也自動產生了很多檔案,還能自動添加開發所依賴的架構。   認識故事板  箭頭表明:程式一啟動就會顯示箭頭所指的介面 在iOS5之前,蘋果使用xib檔案來描述UI介面,在iOS5之後,蘋果採取了更加強大和先進的storyboard檔案來描述介面(Xcode5是基於iOS7),因此,可以得出結論:修改項目中的Main.storyboard檔案就可以修改UI介面。 開啟Main.storyboard檔案一看,裡面有一個全白的介面,這個介面就是模擬器上顯示的介面。 往storyboard的介面中添加其他控制項,得顯示工具列 建議使用九宮格排列控制項表徵圖,這樣一次性看到的控制項多,視野大。 把需要的控制項,拖拽到故事板上,進行 UI 設計。單擊選中某個控制項後,可以在右邊的菜單工具列中更改控制項的屬性   注意:在屬性查看器裡,更改控制項顯示的內容,控制項不會自動調節自己的寬度,而雙擊控制項填寫內容,控制項會自動調整寬度來適應填寫的內容。  各個控制項,不僅可以用滑鼠控制間距和位置,也能選中之後,使用方向鍵微調。 使用 command+r 運行程式,查看效果 注意,蘋果 APP 審核規定,在應該使用數位地方,必須只能輸入數字,否則無法通過。也就是說,本來應該輸入數字,最起碼彈出的鍵盤應該是數字鍵台,而不是。改進方法:在屬性查看器裡,找到 keyboard 屬性,修改為 number。  兩個文本輸入框都設定好即可。 下面實現,點擊按鈕『計算』,進行加法的計算:使用一個如下的編輯模式,點擊助理編輯器 進行關聯操作,方法左邊的圈圈由空心變為實心,說明已經跟某個按鈕進行了連線 OC 中,和介面關聯的方法,通常用 IB 開頭(Interface builder),下面是 點m 檔案:
-(IBAction)compute{    NSLog(@"點擊按鈕進行計算:");    //通過此方法,拿到兩個文字框的輸入值    NSString *str1 = self.num1.text;    NSString *str2 = self.num2.text;    //把輸入的值相加    //把文本轉換為數值使用 intValue    int result = str1.intValue + str2.intValue;    //把結果顯示到規定的標籤    //把整數轉換為字串    self.sum.text = [NSString stringWithFormat:@"%d", result];}

小結:

IOS 程式的開發步驟:

1、設計介面

2、連線關聯

3、寫代碼實現功能(最難,最複雜 )

IBAction 和 IBOutlet1、IBAction,從傳回值角度上看,作用相當於void,只有傳回值聲明為IBAction的方法,才能跟storyboard中的控制項進行連線2、IBOutlet 用來和介面的元素建立關係,用來修改,獲得介面控制項的屬性,故對應的是@property, 而 IBAction 對應的是方法只有聲明為IBOutlet的屬性,才能跟storyboard中的控制項進行連線。 UIViewController是負責程式的控制,相當於管家的角色,而UIView 是負責介面的展示,聯絡 MVC 模式。嚴格來講,箭頭所指的應該是一個UIViewController對象,裡面白色的介面僅僅是UIViewController內部的UIView屬性 故事板:本質是一個 xml 檔案,可以手動的設定程式啟動時載入的storyboard是哪個這個設定表明:程式啟動時會載入Main.storyboard 瞭解消極式載入和懶載入的概念在程式需要的時候,才載入到記憶體裡,效率上變低了,但是程式的記憶體消耗小了,這就是蘋果手機的效能最佳化的好的原因之一! 簡單加法計算機的運行過程1.讀取Main.storyboard檔案2.建立箭頭所指的ViewController對象3.根據storyboard檔案中描述建立ViewController的UIView對象4.將UIView對象顯示到使用者眼前 現在已經知道:應該由ViewController來監聽按鈕的點擊,換句話說,ViewController應該提供一個方法出來,當使用者點擊按鈕時,就調用這個方法來通知ViewController按鈕被人點了。ViewController就在這個方法中實現想做的任何事情,比如計算2個文本輸入框內值的和。 退出鍵盤的兩種方式resignFirstResponder當叫出鍵盤的那個控制項(第一響應者)調用這個方法時,就能退出鍵盤 endEditing只要調用這個方法的控制項內部存在第一響應者,就能退出鍵盤  蘋果官方建議:從 xcode5開始,把不對外開放的屬性和方法聲明,放到 .m 檔案內。 完整代碼
 1 // 2 //  ViewController.h 3 //  加法計算機 4 // 5 //  Created by 大帥 on 15-2-10. 6 //  Copyright (c) 2015年 dashuai. All rights reserved. 7 // 8  9 #import <UIKit/UIKit.h>10 11 @interface ViewController : UIViewController12 //聲明一個計算的對象方法13 -(IBAction)compute;14 //帶有 IBOutlet ,才能修改和獲得控制項的屬性15 @property (weak, nonatomic) IBOutlet UITextField *num1;16 @property (weak, nonatomic) IBOutlet UITextField *num2;17 @property (weak, nonatomic) IBOutlet UILabel *sum;18 @end
 1 // 2 //  ViewController.m 3 //  加法計算機 4 // 5 //  Created by 大帥 on 15-2-10. 6 //  Copyright (c) 2015年 dashuai. All rights reserved. 7 // 8  9 #import "ViewController.h"10 11 @interface ViewController ()12 13 @end14 15 @implementation ViewController16 17 - (void)viewDidLoad {18     [super viewDidLoad];19     // Do any additional setup after loading the view, typically from a nib.20 }21 22 - (void)didReceiveMemoryWarning {23     [super didReceiveMemoryWarning];24     // Dispose of any resources that can be recreated.25 }26 27 //帶有 IBAction 的方法,才能和控制項關聯28 -(IBAction)compute29 {30     NSLog(@"點擊按鈕進行計算:");31     //通過此方法,拿到兩個文字框的輸入值32     NSString *str1 = self.num1.text;33     NSString *str2 = self.num2.text;34     //把輸入的值相加35     //把文本轉換為數值使用 intValue方法36     int result = str1.intValue + str2.intValue;37     //把結果顯示到規定的標籤38     //把整數轉換為字串39     self.sum.text = [NSString stringWithFormat:@"%d", result];40     //記住一個 OOP 設計的習慣規則41     //關閉鍵盤42     //也就是說:誰建立對象,誰負責銷毀對象,因為手機記憶體,寸土寸金!43     //誰開啟鍵盤,誰關閉鍵盤44     45     //調用第一響應者,就是開啟鍵盤的那個控制項,關閉鍵盤46     //[self.num1 resignFirstResponder];47     //[self.num2 resignFirstResponder];48     49     //或者使用強行關閉鍵盤的方法,YES or NO50     [self.view endEditing:YES];51     //NO 也能關閉,但是和 YES 有區別,涉及到了多線程的問題! 不糾結,就永遠寫成 YES。如果是 NO,保不齊某些情景,就不一定能關閉。52 }53 @end

 

 

 

          

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.