IOS開發學習筆記(三)

ios項目模板全都默認使用.xib擴展名,但最初所有的界面構建器文件都使用.nib擴展名。

界面的實現三種方式:storyBorad、xib、純代碼;
storyBorad:由一組或多組相對應的視圖和控制器構成;由場景(Sence)和過渡(segue)組成;缺點是多人開發時容易衝突,多使用xib;
Assets.xcassets目前,創建項目自動生成的資源目錄,用來管理應用圖標及其他圖片;但Xode顯示的是點數尺寸,而不是像素尺寸。這裏的點數是指屏幕上的特殊尺寸。如:2x表示一點就是一個2x2像素的小格子;
3種分辨率:
資源分辨率:也就是資源圖片的大小,單位是像素px
設計分辨率:邏輯上的屏幕大小,單位是 點pt;
屏幕分辨就:以像素爲單位的屏幕大小;

  • 用戶界面控件共有三種基本模式:活躍、靜態和被動

*控件的設置屬性:
Hidden:是否可見
Clip Subviews:若視圖包含一個子視圖,且這個子視圖完全包含在父視圖中,則該選項用於決定子視力的繪製方式;若選中,那麼只有位於父控件內部的子視圖部分會被繪製出來;若不先,子視圖會完全繪製出來,不管有沒有在父視圖內部;

  • 可拉伸圖像;在.xcassets資源目錄中,可直接編輯圖像;類似android中的.9.png;可只拉伸邊緣部分(邊緣圖像),在Xcode5.0前只能使用代碼拉伸,之後可使用工具直接拉伸;在.xcassets面板中選擇右下角的Show Slicing按鈕即可進行拉伸編輯模式;

*調整圖像視圖的大小:一般最好在運行前就做好縮放工作,因爲運行時進行圖像縮放需要消耗一些時間和處理器週期。
控制面板屬性:
View->Interaction: User Interaction Enable:用於控制否能進行交互;
View->Interaction: Multiple Touch:是否能夠接收多點觸控,支持複雜的手持操作
View->Interaction: Drawing:
Opaque:默認選中,相當於告訴ios當前視圖的背後沒有需要繪製的內容,同時允許ios的繪圖方式通過一些優化來加速當前視圖的控制。
Hidden:是否隱藏
Clears Graphics Context:基本不選中,若選中,ios會在實際繪製對象前使用透明的黑色(#00000000)繪製被對象覆蓋的所在區域。
Clip Subviews:若你的視圖包含子視圖,並且這些子視圖沒有完全包含在其父控件的邊界內,那麼這個複選框的值可以決定子視圖的繪製方式,若選中,則只有父控制內部的部分會繪製出來。
Autoresize Subviews:在當前視圖大小發生變化時自動調整子視圖的大小;默認選中。
TextField:
Placeholder:佔位符,可在輸入一些文本,文本框的內容爲空時,placeholder的內容會以灰色文本顯示在文本框中。同android中的hint;
Clear Button:設置何時出現清除按鈕;
Clear When editing begins:指定觸摸此字段時是否清除已有的文本;
Adjust to Fit:可指定顯示文本是否應隨文本框的尺寸變化而變化;
Capitalisation Words:每個輸入的單詞首字母大寫;
Auto-enable Return Key:若選中,在文本框爲空時禁用return鍵;
Secure:是否顯示已輸入的字符;

彈出框:UIActionSheet,從底部彈出
對話框:UIAlertView,屏幕中間彈出
[在ios8都已過時,使用UIAlertController代替];
創建後調用下面方法顯示:
[self presentViewController:alert animated:YES completion:]

建立約束:類似android中的layout的對齊及依靠方式;
Editor->Size to FitContent:將圖像在視圖的大小自動調整到與其中的圖像完全一一致。

+屏幕旋轉:
iPhone屏幕規格:4、4s都個320*480個點,5、5s是568個點,iPad是768*1024個點,狀態欄是20個點。在早期 的iPhoe上點和像素是等價的,一個點就是一個像素。後隨分辨率的提高,一個點的對應的像素也不一樣,最新的iPhone是一個點代表4個點。
在Deployment Info中的Device Orientation中設置app可支持的屏幕方向。這是設置的是所有View支持的方向。
在storyboard上設定好控件後,一次選中所有控件在Editor->Resolve Auto Layout Issues->Add Missing Constraints即可對選中的控件添加約束,保證在屏幕旋轉等情況下保持位置固定。

 # pragma mark 設置當前view可支持的屏幕方向
-(UIInterfaceOrientationMask)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskLandscapeLeft|UIInterfaceOrientationLandscapeRight;
}
#pragma mark 當屏幕旋轉時調用
-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
    //此方法中用於在屏幕方向改變後重新繪製控件新位置
}
- (void)viewDidLoad {
    [super viewDidLoad];
    //在視圖加載完成後,取出屏幕初始方向
    UIApplication *app=[UIApplication sharedApplication];
    UIInterfaceOrientation *orientation = app.statusBarOrientation;
    //根據初始方向處理屏幕控件
}

++ 視圖切換 ++頁面跳轉
使用View Switcher
根控制器:是用戶看到的第一個控制器,負責管理當前向用戶顯示哪個視圖。通常是UINavigationController 或UITabBarController的一個實例,也可是UIViewController的自定義子類。
** 另外還有:
UIPageViewController: 呈現電子書導航風格的控制器;
UISplitViewController:可以把屏幕分割成幾塊的視圖控制器,主要用於Ipad屏幕設計;
UIPopoverController:浮動框;
在多視圖應用中,每個視圖控制器控制一個內容視圖,應用的用戶界面就是在這個內容視圖中構建的。這樣的組合的storyboard中被稱爲場景(sence)。每個sence都是同個視圖控制器和(UIViewController)一個內容視圖(UIView)構成。
a.分別創建兩個UIViewController的子類;
b.在storyboard中創建兩個View Controller並設置其Custom Class爲對應的類;
c.設置創建的view Controller的Identity->Story board Id的值(字符串),並勾選Use Storyboard ID;
d.在根控制器中創建要切換的控制器的實例

instancetype 類型:可使那些非關聯返回類型的方法返回所在類的類型!(不用轉換類型)
與id類型區別:
相同點:都可以作爲方法的返回類型
不同點:instancetype可以返回和方法所在類相同類型的對象,id只能返回未知類型的對象;instancetype只能作爲返回值,不能像id那樣作爲參數;instancetype用來在編譯期確定實例的類型,而使用id的話,編譯器不檢查類型, 運行時檢查類型.(ARC下)

assign,strong,weak區別及使用場景:
assign: 用於非指針變量;如基礎類型;
weak:新版本的assign,弱引用 ,一般UI控件用weak
strong:強引用,一般的變量使用;

在.h和.m文件中創建方法的區別
在.h中的方法和成員默認是protect的,外部可通過對象訪問;
在.m中的方法和成員都是私有的,外部都無法訪問;

用直接訪問變量和用self.訪問變量的區別
_a = b;是直接給成員_a進行賦值;
self.a = b;是調用的定義的setA的方法;封裝性更好,而且對應使用的copy,retain等屬性才能保證原來的set方法;(應該使用該種方式)

博客地址:IOS開發學習筆記(三)

發佈了46 篇原創文章 · 獲贊 7 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章