Autolayout簡介
Autolayout是一種“自動(dòng)布局”技術(shù)癌淮,專門用來布局UI界面的玄呛, Autolayout最初的引入是在IOS6當(dāng)中,由于在Xcode 4中Autolayout自動(dòng)布局當(dāng)時(shí)是很不給力的,所以當(dāng)時(shí)并沒有得到大力推廣
自iOS7(Xcode 5)開始诉探,Autolayout的開發(fā)效率得到很大的提升,蘋果官方也推薦開發(fā)者盡量使用Autolayout來布局UI界面棍厌,Autolayout當(dāng)然也能很輕松地解決屏幕適配的問題
Autolayout有2個(gè)核心概念:參照和約束
Autolayout自動(dòng)布局方法之一:Main.storyboard的實(shí)現(xiàn)
顧名思義肾胯,在Main.storyboard拖入可視化的控件進(jìn)行Autolayout自動(dòng)布局約束,其實(shí)在storyboard拖入控件的Autolayout
- Autolayout常用約束面板之一
QQ20160407-2.jpg
- Autolayout常用約束面板之二
QQ20160407-3.jpg
- Autolayout常用約束面板之三
QQ20160407-4.jpg
Autolayout自動(dòng)布局方法之二:代碼的實(shí)現(xiàn)
- 在實(shí)際的IOS開發(fā)項(xiàng)目中定铜,storyboard中添加的控件不是萬能的阳液,有一些功能這些拖拽的控件是無法實(shí)現(xiàn)的,那就避免不了需要用代碼來添加控件揣炕,那么代碼添加的控件又如何做Autolayout自動(dòng)布局呢帘皿?實(shí)際上就是將storyboard的可視化控件轉(zhuǎn)為代碼形式。
UIView *redView = [[UIView alloc]init];
redView.backgroundColor = [UIColor redColor];
redView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:redView];
//添加約束畸陡,距離頂部20
NSLayoutConstraint *topConstraint = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:redView.superview attribute:NSLayoutAttributeTop multiplier:1.0 constant:20];
[self.view addConstraint:topConstraint];
//添加約束鹰溜,距離父控件左邊10
NSLayoutConstraint *leftConstraint = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:redView.superview attribute:NSLayoutAttributeLeft multiplier:1.0 constant:10];
[self.view addConstraint:leftConstraint];
//添加約束,距離父控件右邊10
NSLayoutConstraint *rightConstraint = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:redView.superview attribute:NSLayoutAttributeRight multiplier:1.0 constant:-10];
[redView.superview addConstraint:rightConstraint];
//添加約束丁恭,固定高度50
NSLayoutConstraint *widthContraint = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:0.0 constant:50];
[redView addConstraint:widthContraint];
/** **********************greenView************************ */
UIView *greenView = [[UIView alloc]init];
greenView.backgroundColor = [UIColor greenColor];
greenView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:greenView];
//添加約束曹动,距離頂部20
NSLayoutConstraint *greenTopConstraint = [NSLayoutConstraint constraintWithItem:greenView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:redView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:20];
[self.view addConstraint:greenTopConstraint];
//添加約束,保持在中間
NSLayoutConstraint *greenLeftConstraint = [NSLayoutConstraint constraintWithItem:greenView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:redView attribute:NSLayoutAttributeWidth multiplier:0.5 constant:0];
[self.view addConstraint:greenLeftConstraint];
//添加約束牲览,距離父控件右邊10
NSLayoutConstraint *greenRightConstraint = [NSLayoutConstraint constraintWithItem:greenView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:greenView.superview attribute:NSLayoutAttributeRight multiplier:1.0 constant:-10];
[redView.superview addConstraint:greenRightConstraint];
//添加約束,固定高度50
NSLayoutConstraint *greenWidthContraint = [NSLayoutConstraint constraintWithItem:greenView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:0.0 constant:50];
[greenView addConstraint:greenWidthContraint];
這一段又臭又長的代碼最終結(jié)果是怎樣呢贡必?
QQ20160407-5.jpg
QQ20160407-7.jpg