iOS 使用VFL自適應

2022-05-10 08:10:06 字數 2005 閱讀 1277

autolayout(vfl)

1、       nslayoutconstraint

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

format:此引數為你的vfl語句,比如:@"h:|-[button]-|"

opts:列舉引數,預設寫0

views:是傳所有你在vfl中使用到的view, nsdictionaryofvariablebindings(button).如果你使用到了多個view,就可以這樣 nsdictionaryofvariablebindings(button,button1,button3...),這個名字也要跟引數 format中的一一對應,缺一不可.

2、    新增約束

uiview

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

3、    簡單的使用

uiview *view = [[uiview alloc] init];//如果使用了vfl,可以忽略檢視的frame,避免與後面的約束條件衝突

view.backgroundcolor = [uicolor graycolor];    view.translatesautoresizingmaskintoconstraints = no;//這一句必須有,如果要實現自動布局,必須將此屬性設定為no,否則約束不生效

[self.view addsubview:view];

nsarray *arr = [nslayoutconstraint constraintswithvisualformat:@"h:|-[view]-|" options:0 metrics:nil views:nsdictionaryofvariablebindings(view)];//設定約束條件,代表距離父view左右各20畫素

nsarray *arr1 = [nslayoutconstraint constraintswithvisualformat:@"v:|-40-[view(==200)]" options:0 metrics:nil views:nsdictionaryofvariablebindings(view)];//設定約束,表示距離頂部40畫素,view的高度為200

[self.view addconstraints:arr1];//新增約束

[self.view addconstraints:arr];

4、    vfl還可以針對兩個平級的view進行設定

nsarray *arr3 = [nslayoutconstraint constraintswithvisualformat:@"v:[view]-30-[view1]-20-|" options:0 metrics:nil views:nsdictionaryofvariablebindings(view,view1)];//表示view1的縱座標比view 的多30畫素,此時最後乙個引數views,需要把涉及的兩個view都傳進去

根據螢幕尺寸設定縮放

1、    以iphone5待螢幕為標準,根據6、6p相對於5的比例進行縮放

2、    獲取螢幕寬度

#define  width              [uiscreen mainscreen].bounds.size.width

3、    獲取比例

#define scale (width/320.0)

4、    自定義rect巨集

#define cgrect1(x,y,width,heigth)  cgrectmake(x*scale, y*scale, width*scale, heigth*scale)

5、    使用

uiview *view = [[uiview alloc] initwithframe:cgrect1(10, 10, 300, 548)];

使用舉例

@end

iOS上鍵盤自適應

第一種,臨時調整視窗中各個檢視的大小,使得鍵盤從下向上占領的區域空白。鍵盤的高度 keyboard.size.height 是一定的,將檢視中所有內容所在區域的y值減小到y keyboard.size.height。該方法有個侷限,如果所有內容之和大於視窗減去鍵盤高度的話,該方法將不能用。第二種,將...

IOS之UILabel自適應高度

當label文字框大小一定的情況下,而要顯示的文字內容長度大於label的weight是,多出的內容只能用.代替了。如何能讓文字內容不管多少都能全部的顯示出來呢。在這裡就寫了乙個uilabel的類目,該類目的方法就能很好的解決這一問題。如下 import inte ce uilabel autore...

iOS實現Cell自適應高度

1.實現uitableviewdelegate中的方法 先設定cell的contentview中label根據內容自動換行 numberoflines 0 實現uitableviewdelegate中的方法 cgfloat tableview uitableview tableview estima...