日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS: 在代码中使用Autolayout (1) - 按比例缩放和优先级

發(fā)布時間:2024/9/30 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS: 在代码中使用Autolayout (1) - 按比例缩放和优先级 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

首先說按比例縮放,這是在Interface Builder中無法設(shè)置的內(nèi)容。而在代碼中,使用NSLayoutConstraint類型的初始化函數(shù)中的multiplier參數(shù)就可以非常簡單的設(shè)置按比例縮放。同時也可以設(shè)置不同NSLayoutAttribute參數(shù)來達到意想不到的效果,比如“A的Width等于B的Height的2倍”這樣的效果。

OK,開始寫代碼,我們就拿一個簡單的UIButton做示例,在ViewController中創(chuàng)建一個UIButton字段:

UIButton?*btn;

命令這個Button水平居中,始終距離父View底部20單位的距離。然后高度是父View高度的三分之一。

最后使用KVO來監(jiān)控Button的大小并實時輸出到屏幕上。

代碼:

- (void)viewDidLoad

{

??? [super?viewDidLoad];

???

????//創(chuàng)建UIButton,不需要設(shè)置frame

????btn?= [UIButton?buttonWithType:UIButtonTypeRoundedRect];

??? [btn?setTitle:@"mgen"?forState:UIControlStateNormal];

????btn.backgroundColor?= [UIColor?greenColor];

??? [self.view?addSubview:btn];

????//禁止自動轉(zhuǎn)換AutoresizingMask

????btn.translatesAutoresizingMaskIntoConstraints?=?NO;

???

????//居中

??? [self.view?addConstraint:[NSLayoutConstraint

??????????????????????????????constraintWithItem:btn

??????????????????????????????attribute:NSLayoutAttributeCenterX

??????????????????????????????relatedBy:NSLayoutRelationEqual

??????????????????????????????toItem:self.view

??????????????????????????????attribute:NSLayoutAttributeCenterX

??????????????????????????????multiplier:1

??????????????????????????????constant:0]];

???

????//距離底部20單位

????//注意NSLayoutConstraint創(chuàng)建的constant是加在toItem參數(shù)的,所以需要-20。

??? [self.view?addConstraint:[NSLayoutConstraint

??????????????????????????????constraintWithItem:btn

??????????????????????????????attribute:NSLayoutAttributeBottom

??????????????????????????????relatedBy:NSLayoutRelationEqual

??????????????????????????????toItem:self.view

??????????????????????????????attribute:NSLayoutAttributeBottom

??????????????????????????????multiplier:1

??????????????????????????????constant:-20]];

???

????//定義高度是父View的三分之一

??? [self.view?addConstraint:[NSLayoutConstraint

??????????????????????????????constraintWithItem:btn

??????????????????????????????attribute:NSLayoutAttributeHeight

??????????????????????????????relatedBy:NSLayoutRelationEqual

??????????????????????????????toItem:self.view

??????????????????????????????attribute:NSLayoutAttributeHeight

??????????????????????????????multiplier:0.3

??????????????????????????????constant:0]];

???

????//注冊KVO方法

??? [btn?addObserver:self?forKeyPath:@"bounds"?options:NSKeyValueObservingOptionNew?|NSKeyValueObservingOptionInitial?context:nil];???

}

?

//KVO回調(diào)

- (void)observeValueForKeyPath:(NSString?*)keyPath ofObject:(id)object change:(NSDictionary?*)change context:(void?*)context

{

????if?(object ==?btn?&& [keyPath?isEqualToString:@"bounds"])

??? {

??????? [btn?setTitle:NSStringFromCGSize(btn.bounds.size)?forState:UIControlStateNormal];

??? }

}

?

運行結(jié)果:

?

?

OK,沒有任何問題。

?

接下來有一個新的需求,在橫向的顯示中,Button的高度只有96,覺得他太短了,所以要求Button的最小高度為150。

這樣的話,需要加入另一個限制大小的Constraint,但是這兩個Constraint在某些情況下是有沖突的,我們可以通過設(shè)置Constraint的優(yōu)先級來解決。優(yōu)先級對應NSLayoutConstraint類型的priority屬性,默認值是UILayoutPriorityRequired,數(shù)值上等于1000. 設(shè)置一個低的值代表更低的優(yōu)先級。

另外對于最小值的定義,使用NSLayoutRelationGreaterThanOrEqual作為NSLayoutConstraint類型創(chuàng)建時的relatedBy參數(shù)。

?

修改上面的比例Constraint,并在下方加入一個新的限制最小值的Constraint,代碼:

//定義高度是父View的三分之一

//設(shè)置優(yōu)先級低于UILayoutPriorityRequired(1000),UILayoutPriorityDefaultHigh是750

NSLayoutConstraint?*con = [NSLayoutConstraint

??????????????????????????constraintWithItem:btn

??????????????????????????attribute:NSLayoutAttributeHeight

??????????????????????????relatedBy:NSLayoutRelationEqual

??????????????????????????toItem:self.view

??????????????????????????attribute:NSLayoutAttributeHeight

??????????????????????????multiplier:0.3

??????????????????????????constant:0];

con.priority?=?UILayoutPriorityDefaultHigh;

[self.view?addConstraint:con];

?

//設(shè)置btn最小高度為150

[btn?addConstraint:[NSLayoutConstraint

????????????????????constraintWithItem:btn

????????????????????attribute:NSLayoutAttributeHeight

????????????????????relatedBy:NSLayoutRelationGreaterThanOrEqual

????????????????????toItem:nil

????????????????????attribute:NSLayoutAttributeNotAnAttribute

????????????????????multiplier:1

????????????????????constant:150]];

?

運行后,橫向屏幕中的Button高度成了150:

?

總結(jié)

以上是生活随笔為你收集整理的iOS: 在代码中使用Autolayout (1) - 按比例缩放和优先级的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲视频在线观看 | 国产超碰在线 | 精品无码国产av一区二区三区 | 帮我拍拍漫画全集免费观看 | 亚洲欧美另类一区 | 嫩草影院久久 | 免费黄色在线 | 亚洲成在线 | 天天爱天天舔 | 在线免费观看污网站 | 俺来也俺也啪www色 欧洲一区二区视频 | 日韩成人av电影 | 污污视频网站在线免费观看 | 久久爱资源网 | 色猫咪av在线 | 人妻在卧室被老板疯狂进入 | 成人精品自拍 | 国产特黄级aaaaa片免 | 草视频在线观看 | 国产婷婷色一区二区三区 | 成年人视频在线免费观看 | 亚洲天堂中文字幕在线观看 | 欧美色图狠狠干 | 欧美日本高清视频 | 老汉色av| 免费成人黄色网址 | 爆操日本美女 | 草视频在线观看 | 午夜精品久久久久久久无码 | 色哟哟国产精品色哟哟 | 九九影视理伦片 | 69国产| 新版红楼梦在线高清免费观看 | 丰满熟妇肥白一区二区在线 | 欧美videossex另类 | 啊v视频在线观看 | 黄色在线观看免费 | 日韩毛片免费观看 | 国产高潮失禁喷水爽到抽搐 | 精品电影一区二区 | 性一交一乱一精一晶 | 丰满岳乱妇国产精品一区 | 黄色69视频 | 欧美日韩一区二区三区在线播放 | 女人18片毛片60分钟 | 三级视频网站 | 在线观看黄 | av噜噜色 | 欧美日本道 | 性中国古装videossex | 亚洲va久久久噜噜噜无码久久 | 亚洲欧美一区二区三区四区五区 | 日本成人一二三区 | 夜夜爱av | 国产亚洲欧美精品久久久www | 午夜激情一区 | 精品久久久久一区二区国产 | 久久久资源 | jizz国产在线观看 | 四虎影 | 色婷婷综合久久久久中文一区二区 | 欧美综合成人 | 亚洲综合在线成人 | 男人的天堂免费视频 | 男男做爰猛烈叫床爽爽小说 | 久久久天天 | 少妇呻吟视频 | 亚洲视频综合网 | 成人免费毛片网 | 国产女人水真多18毛片18精品 | 日韩欧美精品一区二区 | 日本精品一区二区视频 | 看全黄大色黄大片美女人 | 国精产品一区一区三区在线 | 午夜精品小视频 | 中国挤奶哺乳午夜片 | 欧美精品做受xxx性少妇 | 天天操bb| 无码人妻精品一区二区三区蜜桃91 | 日本少妇毛茸茸 | 精品一区二区三区免费观看 | 欧美亚洲在线视频 | 亲子乱aⅴ一区二区三区 | aaaaa毛片 | 亚洲精品久久视频 | 亚洲精品一二三四区 | av网址免费在线观看 | 夜夜嗨av一区二区三区免费区 | 精品无码久久久久久久久 | 成人天堂噜噜噜 | 国产高清在线观看视频 | 国产三级自拍视频 | 中文字幕少妇在线三级hd | 九九精品国产 | 午夜欧美成人 | 亚洲2022国产成人精品无码区 | 91国偷自产一区二区三区女王 | 免费福利在线视频 | 第四色在线视频 |