? ? ? ?簡(jiǎn)書上講autolayout的文章很多断序,但大多數(shù)是從理論上來(lái)講的流纹,我這里說(shuō)一個(gè)平時(shí)開發(fā)中常見到的一種需求,先看一下倆張圖吧违诗。
字多的時(shí)候
字少的時(shí)候
? ? ? ?簡(jiǎn)單的說(shuō)明一下就是當(dāng)文字多的時(shí)候圖片會(huì)往后走漱凝,但是圖片不能到屏幕以外,最多和屏幕邊距保持10個(gè)像素的距離诸迟。當(dāng)字再多的時(shí)候茸炒,會(huì)自動(dòng)換行。iOS的小伙伴們阵苇,想一下這樣的需求用autolayout改如何實(shí)現(xiàn)呢壁公?
解決方案
- 拖一個(gè)label再拖一個(gè)imageView到你的storyBoard或者Xib文件上,先來(lái)約束label:據(jù)左--給個(gè)10吧绅项,居上--你隨意吧(或者設(shè)置成垂直居中)紊册,然后寬度:這塊你得添加個(gè)約束,否則文字特別多的時(shí)候快耿,就會(huì)超出屏幕的囊陡,所以你先寫個(gè)320吧(這數(shù)字隨便),默認(rèn)的會(huì)是等于,你這里需要把它改成小于等于掀亥。高度:你隨意設(shè)置撞反,也可以不管,如果你想顯示很多行搪花,那么久設(shè)置的大點(diǎn)遏片,或者不設(shè)置。
- label設(shè)置完了撮竿,下面設(shè)置imageView的約束條件:據(jù)左--相對(duì)于label定死10吧.據(jù)上--你隨便吧,自身的寬高約束一下--都是50吧丁稀。然后就可以不管了。
- 因?yàn)樾枰聊贿m配倚聚,你不知道屏幕的寬具體是多少线衫,所以需要你把步驟1中的設(shè)置label寬的那個(gè)約束找到,然后拖一個(gè)IBOutlet出來(lái)惑折,就類似與你平時(shí)拖一個(gè)label的IBOutlet一樣授账。
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *screenW;
名字我隨便起的。拖出來(lái)的約束在viewDidload里面修改一下``` self.screenW.constant = [UIScreen mainScreen].bounds.size.width-70;//imageView--50 兩邊個(gè)間距10惨驶,所以label寬度不能大于屏幕寬度減去70
>試想一下粗卜,如果你用純代碼完成這樣的需求需要多少行代碼呢屋确?按照這個(gè)思路你可以完成很多類似的復(fù)雜一些的需求哦??
#Demo演示
       github上傳了Demo地址:[https://github.com/iOSKesai/autolayoutDemo.git](https://github.com/iOSKesai/autolayoutDemo.git),有興趣的小伙伴可以下載看一下很簡(jiǎn)單。
#備注
![設(shè)置說(shuō)明](http://upload-images.jianshu.io/upload_images/1538778-36a47f86dc536352.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)