UI視圖-屏幕適配

適配方案

  • 手碼適配
    手碼寫控件的時候用此方法適配
    根據當前屏幕寬高,其他控件坐標及寬高等進行適配
//獲取屏幕的寬高
#define ScreenWidth [UIScreen mainScreen].bounds.size.width
#define ScreenHeight [UIScreen mainScreen].bounds.size.height

示例:
labelOne根據當前屏幕寬高適配
labelTwo根據labelOne坐標及寬高進行適配

    UILabel *labelOne = [[UILabel alloc] initWithFrame:CGRectMake(ScreenWidth/2 - 20, 20, 40, 40)];
    labelOne.backgroundColor = [UIColor yellowColor];
    [self.view addSubview:labelOne];
    
    UILabel *labelTwo = [[UILabel alloc] initWithFrame:CGRectMake(labelOne.frame.origin.x, labelOne.frame.origin.y + labelOne.frame.size.height + 10, labelOne.frame.size.width, labelOne.frame.size.height)];
    labelTwo.backgroundColor = [UIColor greenColor];
    [self.view addSubview:labelTwo];

效果圖:

78AA851F-9710-447C-9A52-C6446788DD40.png
  • AutoResizing
    AutoLayout之前的適配方法,現在不常用了
    在view的autoresizesSubviews屬性為YES時(默認為YES), AutoResizing才會生效
    因為從Xcode6開始,storyboard&xib默認是自動布局,所以需要手動調整,才能使用AutoResizing,按下圖所示,將AutoLayout和SizeClasses取消勾選
BD1741E0-311A-421C-A9F7-A08313C8B750.png

示例:
在view上添加textField,根據屏幕寬度自動伸縮,左右距離屏幕均為20
1-根據當前view的尺寸(寬375,高667),將textField添加在正確位置

7F0B21A8-598B-494A-987F-88542920D826.png

2-方框內的橫豎為textField的寬高是否縮放,方框外的上下左右為距離父視圖的距離

DEDB62C4-0815-4FE3-86E3-EB03F644D657.png

效果圖:

A2C5379E-746E-4B2A-AA14-ED3F2F7D1CC6.png

如果只設置了上邊距和右邊距,則運行結果為:

C89268DA-2BC5-4027-9DBE-9FA1B5B1FA30.png
  • AutoLayout
直接約束

簡單易用,最愛!只需要給每一個控件設置好唯一位置即可!
下圖暗色部分,為設置兩個控件坐標時使用
下圖最下面兩行,為屏幕寬高居中

384916D6-D79D-40DB-B8AB-145030CB809E.png

下圖為設置某一控件上下左右距離及自身寬高

8876192B-963C-4126-916B-9F37A40335D4.png

注意:此兩種配合使用時,很可能出現設置重復,在下圖中查看,將重復的刪除即可(點中某一行,直接delete)

D16E789F-88AF-40A9-9E73-47C5DD2D614E.png

快捷鍵:
command+option+"=" 將控件移動到適配后的位置

VFL語言約束

僅了解一點,沒怎么用過

    UIButton *button=[[UIButton alloc]init];
    [button setTitle:@"VFL約束" 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];

效果圖:

6C6CA8CD-53F7-4117-8C1C-3D930A4F858F.png

-** SizeClasses**
iOS8之后新增的特性,將屏幕分成不同的抽象概念,具體還未使用過

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 簡介: 1.在以前的IOS程序中,是如何設置布局UI界面的?解決方式:(1)經常編寫大量的坐標,計算代碼(2)為了...
    IIronMan閱讀 618評論 1 2
  • 屏幕適配的發(fā)展歷史 iPhone3GS\iPhone4沒有屏幕適配可言全部用frame、bounds、center...
    嗶哩嗶哩智能喵閱讀 676評論 0 0
  • 如果有國產劇追,那我肯定不會再追美劇。畢竟文化隔膜這個東西還是真實存在的,會無形的影響你對很多細致入微的東西的體會...
    聽風雨寒閱讀 371評論 1 3
  • 藝術·文化·園林之魂——“宅”的藝術 作者:微思考 錯落有致、曲徑通幽、別有洞天構成了當年第一次踏足蘇州園林時留給...
    簡黛玉閱讀 2,753評論 5 52
  • 艾融愛意涌真情, 思化詩心不慕名, 自有歪才吟濫調, 嘲言諷我夢明星。 注:首嵌"艾思自嘲“四字。 前段有人評論我...
    艾思閱讀 268評論 2 6

友情鏈接更多精彩內容