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...