国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

ios適配

2019-11-09 14:02:11
字體:
來源:轉載
供稿:網友

一、iOS屏幕適配發展歷程

設備適配技術
4及以前(ipad未出)直接用代碼計算
有了iPadautoResizing
有不同屏幕的iPhone后autoLayout
有更多不同屏幕的iPhone后sizeClass

二、各個技術的特性

1、 直接用代碼計算

由于屏幕的大小都一樣,只有橫豎屏的情況,可以直接計算

2、 autoResizing

適合于控件與其父控件的關系

各屬性的解釋

屬性解釋
UIViewAutoresizingNone不會隨父視圖的改變而改變
UIViewAutoresizingFlexibleLeftMargin自動調整view與父視圖左邊距,以保證右邊距不變
UIViewAutoresizingFlexibleWidth自動調整view的寬度,保證左邊距和右邊距不變
UIViewAutoresizingFlexibleRightMargin自動調整view與父視圖右邊距,以保證左邊距不變
UIViewAutoresizingFlexibleTopMargin自動調整view與父視圖上邊距,以保證下邊距不變
UIViewAutoresizingFlexibleHeight自動調整view的高度,以保證上邊距和下邊距不變
UIViewAutoresizingFlexibleBottomMargin自動調整view與父視圖的下邊距,以保證上邊距不變
view的autoresizesSubviews屬性為yes時(默認為yes),autoresizing才會生效。從XCODE6開始,Storyboard&Xib默認是自動布局,因此我們需要手動調整,才能使用autoresizing。autoresizing可以組合使用,如:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin
3、autoLayout

幫我們確定在不同設備、不同(父view)環境下,同一個可視單元所應具有合適的位置和尺寸(任何兩個視圖的關系都可以確定) 

1. autoLayout的用法:

直接建立約束條件 [self.view addConstraint: [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:redView attribute:NSLayoutAttributeLeft multiplier:1 constant:0]];這樣雖然代碼量比較大,但是是絕對可行的辦法,也是使用autoLayout最根本的辦法之一。使用VFL語言- (void)viewDidLoad { [super viewDidLoad]; UIButton *button=[[UIButton alloc]init]; [button setTitle:@"點擊一下" forState:UIControlStateNormal]; button.translatesAutoresizingMaskIntoConstraints=NO; [button setBackgroundColor:[UIColor blackColor]]; [self.view addSubview:button]; NSArray *constraints1=[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[button]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(button)]; NSArray *constraints2=[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[button(==30)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(button)]; [self.view addConstraints:constraints1]; [self.view addConstraints:constraints2]; }使用使用第三方庫,如:Masonry、UIView+AutoLayout…… 
2. autoLayout的好處:
你基本上可以不用考慮3.5寸和4寸以及即將上市的x.x寸屏幕不同分辨率的問題,你終于可以不用在viewDidLoad方法里判斷不同分辨率下,不同控件應該放在哪里,或者針對不同分辨率寫不同的storyboard和xib;你可以拋棄那些根據不同文字來計算tableViewCell、UILabel高度的代碼了,因為autolayout會幫你自動計算好;如果你的布局在橫屏豎屏下變化不是特別大,你不用再為橫著豎著寫兩套代碼或者寫兩個storyboard/xib了;
4、sizeClass

在iOS8中,新增了Size Classes特性,它是對當前所有iOS設備尺寸的一個抽象。那我們就只把屏幕的寬和高分別分成三種情況:Compact:緊湊、Regular:寬松、Any:任意。

這樣寬和高三三一整合,一共9中情況。如下圖所示,針對每一種情況。我們可以在每種情況下設置不同的布局(包括控件的約束,甚至是控件是否顯示)

sizeClass.pngsizeClass.png

對sizeClass的理解:sizeClass的實質是將iOS屏幕分成了不同的抽象概念,這些不同的抽象組合,對應著不同的設備屏幕。所以,利用sizeClass可以針對同一套UI,來適配所有的屏幕。注意:這些所有的適配,都是利用autoLayout來實現的,sizeClass只是負責提供不同的屏幕尺寸。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 瓮安县| 利津县| 绥阳县| 汕尾市| 托克托县| 乌拉特前旗| 根河市| 临朐县| 项城市| 金寨县| 陕西省| 丽水市| 小金县| 田林县| 尉氏县| 榆中县| 虹口区| 广丰县| 河曲县| 宿州市| 交城县| 无为县| 临猗县| 筠连县| 新绛县| 湖南省| 文安县| 云安县| 古蔺县| 建阳市| 靖远县| 灵丘县| 安阳市| 利川市| 壤塘县| 华安县| 曲阳县| 桃源县| 改则县| 沙河市| 张家港市|