AutoLayout的使用及介紹

2021-08-15 11:10:52 字數 2599 閱讀 3713

為什麼會出現autoresizingmask和autolayout?

1. 適配:適應、相容各種不同的情況 

系統適配:新的方法、舊的方法廢棄

螢幕適配:針對不同大小螢幕尺寸進行適配

1> 點、畫素的關係

在使用者眼中

螢幕是由無數個畫素組成的

畫素越多,螢幕越清晰

在開發者眼中

螢幕是由無數個點組成的,點又是由畫素組成的

畫素越多,螢幕越清晰

2> 在以前的ios程式中,是如何布局ui介面的?

寫固定值-> autoresizingmask -> autolayout-> sizeclasses

iphone1-iphone4s時代 螢幕的尺寸固定為(320,480) ,我們只需要簡單計算一下相對位置就好了

iphone5-iphone5s時代螢幕的尺寸變了(320,568) 這時autoresizingmask派上了用場 

iphone6時代(ios8) 螢幕的寬度也發生了變化,終於是時候拋棄autoresizingmask改用autolayout了,原因如下:

(1)不用支援ios5了 

(2)相對於螢幕適配的多樣性來說autoresizingmask也已經過時了,直到iphone6發布之後autolayout勢在必行了

2.autoresizingmask(簡單了解)

autolayout不相容

3.autolayout

1> 認識autolayout:

(1) autolayout是一種「自動布局」技術,專門用來布局ui介面的

(2) autolayout自ios 6開始引入,由於xcode 4的不給力,當時並沒有得到很大推廣~

(3) 自ios 7(xcode 5)開始,autolayout的開發效率得到很大的提公升

(4) 蘋果官方也推薦開發者盡量使用autolayout來布局ui介面

(5) autolayout能很輕鬆地解決螢幕適配的問題

2> **實現autolayout的步驟

1.利用nslayoutconstraint類建立具體的約束物件,新增約束物件到相應的view上,乙個nslayoutconstraint物件就代表乙個約束

遵循公式:item1.attribute1 = multiplier × item2.attribute2 + constant

建立約束物件的常用方法

+(id)constraintwithitem:(id)view1 attribute:(nslayoutattribute)attr1 relatedby:(nslayoutrelation)relation toitem:(id)view2 attribute:(nslayoutattribute)attr2 multiplier:(cgfloat)multiplier constant:(cgfloat)c;

view1 :要約束的控制項

attr1 :約束的型別(做怎樣的約束)

relation :與參照控制項之間的關係

view2 :參照的控制項

attr2 :約束的型別(做怎樣的約束)

multiplier :乘數

c :常量

2.新增約束到對應的父檢視上

- (void)addconstraint:(nslayoutconstraint *)constraint;

- (void)addconstraints:(nsarray *)constraints;

**實現autolayout的注意點

(1) 要先禁止autoresizing功能,設定view的下面屬性為no

view.translatesautoresizingmaskintoconstraints = no;

(2) 新增約束之前,一定要保證相關控制項都已經在各自的父控制項上,不用再給view設定frame

(3) 在autolayout中有這樣的規定,對於兩個同層級view之間的約束關係,新增到它們的父view上;對於兩個不同層級view之間的約束關係,新增到他們最近的共同父view上;對於有層次關係的兩個view之間的約束關係,新增到層次較高的父view上

3.基於autolayout的動畫

在修改了約束之後,只要執行下面**,就能做動畫效果

[uiview animatewithduration:1.0 animations:^];

3> vfl(visual format language:視覺化格式語言)

(1) vfl是蘋果公司為了簡化autolayout的編碼而推出的抽象語言

(2) 示例:"h:[view1(72)]-12-[view2(50)]"    ->  view1寬72,view2寬50,它們之間間距12

(3) **實現:

使用vfl來建立約束陣列

+ (nsarray *)constraintswithvisualformat:(nsstring *)format options:(nslayoutformatoptions)opts metrics:(nsdictionary *)metrics views:(nsdictionary *)views;

format :vfl語句

opts :約束型別

metrics :vfl語句中用到的具體數值

views :vfl語句中用到的控制項

Auto Layout 入門及使用

引言 auto layout是ios6發布後引入的乙個全新的布局特性,其目的是彌補以往autoresizing在布局方面的不足之處,以及未來應對更多尺寸適配介面時布局可以更好的展示.要完全掌握auto layout 以下簡稱al 不是一件容易的事情,實踐是學習和掌握的根本,並且在根本上面,理解其如何...

MySQL Explain的使用及各引數介紹

select type,查詢的型別 table,輸出 查詢 表的名稱 type,訪問方式 possible keys,可能使用的key 顯示可能使用的索引,沒有則為null,有的話可能是多個,但是不一定全部使用 key,實際使用的索引 key len,表示索引中所使用的位元組數,可通過該列計算查詢中...

AutoLayout的各種使用方法

關於autolayout 下面通過乙個簡單的列子分別演示autolayout的各種使用方法 需求是在控制器view底部新增2個view,1個藍色,1個紅色2個view寬度 高度永遠相等距離父控制項左邊 右邊 下邊間距和2個view之間的間距相等,效果如下圖 橫屏效果 橫屏效果 豎屏效果 豎屏效果 在...