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 類型:可使那些非關聯返回類型的方法返回所在類的類型?。ú挥棉D換類型) 與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開發學習筆記(三)
新聞熱點
疑難解答