iOS開發(fā)中使用Masonry設(shè)置極限約束以及優(yōu)先級(jí)

需求1:

對(duì)某個(gè)控制器上的view上的label進(jìn)行布局,要求其右側(cè)至少與view水平方向的中心處對(duì)齊,寬度隨著文字的增加逐漸變寬,但其右側(cè)距離view右側(cè)至少10pt.

使用Masonry

使用Masonry對(duì)UILabel進(jìn)行約束,設(shè)置其寬度的最小約束和距離右側(cè)的最大距離
代碼:

  UILabel * orangeLbl = [UILabel new];
orangeLbl.backgroundColor = [UIColor orangeColor];
[self.view addSubview:orangeLbl];
orangeLbl.text = @"設(shè)置最小寬度-";
[orangeLbl mas_makeConstraints:^(MASConstraintMaker *make) {
    make.left.equalTo(self.view.mas_left).offset(10);
    make.top.equalTo(self.view.mas_top).offset(200);
    make.width.mas_greaterThanOrEqualTo(self.view.frame.size.width * 0.5 - 10); // 設(shè)置最小寬度
    make.right.mas_lessThanOrEqualTo(self.view.mas_right).offset(-10);  // 設(shè)置距離右邊最小距離
}];

使用到了mas_greaterThanOrEqualTo和mas_lessThanOrEqualTo

需求2

某個(gè)控制器上的view上有兩個(gè)label,左、右兩邊各一個(gè),兩者之間的間距為10pt,左、右兩邊label的寬度最少為100,但當(dāng)兩個(gè)label上的文字都很多的時(shí)候首先左側(cè)的label上展示的文字更多。

使用Masonry

這是需要使用Masonry設(shè)置UILabel抗壓縮的優(yōu)先級(jí)
代碼:

   UILabel * leftlbl = [UILabel new];
[self.view addSubview:leftlbl];
UILabel * rightLbl = [UILabel new];
[self.view addSubview:rightLbl];

leftlbl.backgroundColor = [UIColor yellowColor];
rightLbl.backgroundColor = [UIColor redColor];

[rightLbl mas_makeConstraints:^(MASConstraintMaker *make) {
    make.top.equalTo(self.view.mas_top).offset(100);
    make.right.equalTo(self.view.mas_right).offset(-10);
    make.width.mas_greaterThanOrEqualTo(100);   // 這是最小寬度
}];
[leftlbl mas_makeConstraints:^(MASConstraintMaker *make) {
    make.left.equalTo(self.view.mas_left).offset(10);
    make.top.equalTo(self.view.mas_top).offset(100);
    make.right.equalTo(rightLbl.mas_left).offset(-10);
    make.width.mas_greaterThanOrEqualTo(100);
}];

leftlbl.text = @"這是左邊的文字-";
rightLbl.text = @"這是右邊的文字-這是右邊的文字-這是右邊的文字-";

// 設(shè)置抗壓縮優(yōu)先級(jí)
[leftlbl setContentCompressionResistancePriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisHorizontal];
[rightLbl setContentCompressionResistancePriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal];

leftlbl的抗壓縮優(yōu)先級(jí)更高,所以leftlbl不容易被壓縮,能展示更多的文字。

放個(gè)效果圖:


屏幕快照 2018-12-17 下午10.59.39.png

放個(gè)demo
https://gitee.com/liangsenliangsen/masonry_priority.git

本篇文章到這里就結(jié)束了,愿大家加班不多工資多,男同胞都有女朋友,女同胞都有男朋友。??

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

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

  • Masonry是一個(gè)輕量級(jí)的布局框架,它擁有自己的描述語(yǔ)法(采用更優(yōu)雅的鏈?zhǔn)秸Z(yǔ)法封裝)來(lái)自動(dòng)布局,具有很好可讀性且...
    AngeloD閱讀 3,566評(píng)論 0 9
  • Masonry是一個(gè)輕量級(jí)的布局框架,擁有自己的描述語(yǔ)法,采用更優(yōu)雅的鏈?zhǔn)秸Z(yǔ)法封裝自動(dòng)布局,簡(jiǎn)潔明了并具有高可讀性...
    3dcc6cf93bb5閱讀 1,946評(píng)論 0 1
  • (一)Masonry介紹 Masonry是一個(gè)輕量級(jí)的布局框架 擁有自己的描述語(yǔ)法 采用更優(yōu)雅的鏈?zhǔn)秸Z(yǔ)法封裝自動(dòng)布...
    木易林1閱讀 2,594評(píng)論 0 3
  • [置頂]iOS - Masonry使用中的一些整理 標(biāo)簽:iOS資源大全iOS常用方法iOS學(xué)習(xí)資料Masonry...
    DreamMakerSky閱讀 3,271評(píng)論 0 4
  • 慧語(yǔ)禪心:習(xí)忘者可以養(yǎng)生 刻意養(yǎng)生,已經(jīng)是對(duì)自己的健康缺乏信心,而憂心傷身,怎及順應(yīng)自然、心無(wú)掛礙,無(wú)為而無(wú)不為有...
    xcy無(wú)名閱讀 279評(píng)論 0 0

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