iOS AutoLayout進(jìn)階(一)Aspect Ratio

前言

AutoLayout相信大家都不陌生,iOS開發(fā)中涉及到UI布局的地方,都有它的身影,基本用法很多同學(xué)都會,本文就不做介紹,下面就AutoLayout一些進(jìn)階高級用法,做詳細(xì)介紹,掌握好這些技巧,iOS開發(fā)將事半功倍,由于篇幅較長,將拆分為幾個(gè)篇幅,一一介紹.

一. 本篇重點(diǎn)介紹:Aspect Ratio

1. Aspect Ratio:

設(shè)置視圖的寬高比

2. 使用場景:

視圖寬度隨著屏幕寬度變化拉伸時(shí),讓其高度自動進(jìn)行等比例拉伸.保持該視圖寬高比不變.

3. Aspect Ratio在約束界面如下位置:
Aspect Ratio 位置.png

二. Demo效果:

Demo.gif

三. 代碼示例:

1.新建工程,在視圖控制器中添加一個(gè) imageView,并為其設(shè)置一張寬高比為16:9的圖片.

2.對imageView添加如下約束.

1.豎向居中
2.增加寬度約束為320
3.設(shè)置Aspect Ratio寬高比為16:9
4.增加頂部約束
約束.png

3.分別選中imageView、寬度約束右鍵脫線生成變量imgView、imgViewWidth
起一個(gè)定時(shí)器,動態(tài)修改其寬度imgViewWidth屬性,代碼如下:

#import "ViewController.h"

 static CGFloat changeValue = -18;//記錄變化值

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imgView;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *imgViewWidth;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(action) userInfo:nil repeats:YES];
}

-(void)action{
    _imgViewWidth.constant += changeValue;
    if(_imgViewWidth.constant<=150){//最小寬度
        changeValue = 18;
    }else if(_imgViewWidth.constant>320){//最大寬度
        changeValue = -18;;
    }
}

@end

四.小結(jié):

由于設(shè)置了imgView寬高比為16:9,所以寬度動態(tài)變化時(shí),其高度也會根據(jù)設(shè)置的寬高比做相應(yīng)變化.


代碼地址:https://github.com/CoderZhuXH/AutoLayout

相關(guān)閱讀:

iOS AutoLayout進(jìn)階(二)Content Hugging Priority
iOS AutoLayout進(jìn)階(三)Content Compression Resistance Priority
iOS AutoLayout進(jìn)階(四)Content Hugging Priority和Content Compression Resistance Priority綜合運(yùn)用
iOS AutoLayout進(jìn)階(五)UITableViewCell自動高度

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容