Masonry 中多個(gè)UILabel 橫向約束的展示

今天在做UI 的時(shí)候,突然在做 UILabel 橫向展示的時(shí)候卡了一下奔脐,于是決定總結(jié)一下常見的情況,以免再犯快速解決吁讨,特此先看下常見的幾種情況:

  • 1髓迎、僅僅固定間距
  • 2、固定間距建丧,等寬度
  • 3竖般、固定間距,寬度根據(jù)內(nèi)容而定
1茶鹃、僅僅固定間距
僅僅固定間距

[self.oneLabel mas_makeConstraints:^(MASConstraintMaker *make) {
    make.centerY.equalTo(self.view.mas_centerY);
    make.leading.mas_equalTo(20);
}];

[self.twoLabel mas_makeConstraints:^(MASConstraintMaker *make) {
    make.centerY.equalTo(self.view.mas_centerY);
    make.leading.equalTo(self.oneLabel.mas_trailing).offset(20);
}];

[self.threeLabel mas_makeConstraints:^(MASConstraintMaker *make) {
    make.centerY.equalTo(self.view.mas_centerY);
    make.leading.equalTo(self.twoLabel.mas_trailing).offset(20);
    make.trailing.mas_equalTo(-20);
}];
2涣雕、固定間距,等寬度
固定間距闭翩,等寬度
[self.oneLabel mas_makeConstraints:^(MASConstraintMaker *make) {
    make.centerY.equalTo(self.view.mas_centerY);
    make.leading.mas_equalTo(20);
}];

[self.twoLabel mas_makeConstraints:^(MASConstraintMaker *make) {
    make.centerY.equalTo(self.view.mas_centerY);
    make.leading.equalTo(self.oneLabel.mas_trailing).offset(20);
    make.width.equalTo(self.oneLabel.mas_width);
}];

[self.threeLabel mas_makeConstraints:^(MASConstraintMaker *make) {
    make.centerY.equalTo(self.view.mas_centerY);
    make.leading.equalTo(self.twoLabel.mas_trailing).offset(20);
    make.trailing.mas_equalTo(-20);
    make.width.equalTo(self.twoLabel.mas_width);
}];

此處注意當(dāng)內(nèi)容超過寬度時(shí)挣郭,不考慮其他情況下,有時(shí)僅僅用numberOfLines = 0 就達(dá)到下面這種效果啦


numberOfLines = 0
3疗韵、固定間距兑障,寬度根據(jù)內(nèi)容而定

正常情況中約束優(yōu)先級(jí)是相同的,就猶如圖1 一樣蕉汪,如果需要特殊對(duì)待流译,就可以通過 抗拉 抗壓來改變啦

    [self.twoLabel
        setContentCompressionResistancePriority:UILayoutPriorityRequired
        forAxis:UILayoutConstraintAxisHorizontal
     ];
注意優(yōu)先級(jí)

當(dāng)然此種情況下,注意優(yōu)先級(jí)別的區(qū)分者疤,別三者都設(shè)置成一樣, 否則也就沒什么區(qū)別啦...

例如確定:Three 福澡、Two 優(yōu)先級(jí)高

Three 、Two 優(yōu)先級(jí)高
[self.twoLabel setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
[self.threeLabel setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];

但是此處要注意有可能當(dāng)驹马,twoLabel 和 threeLabel 內(nèi)容過多時(shí)革砸,此處直接把OneLabel 約束沒有啦

OneLabel 直接被擠沒了

這肯定是不合理的除秀,在我們有三者都要確定,又不換行的情況下算利,還是在某個(gè)Label 上確定個(gè)高度比較合理册踩,同時(shí)調(diào)整下被擠壓的情況。其實(shí)通常我們只要確定一個(gè) 具有最大的優(yōu)先級(jí)比較合理效拭。

延伸一下:equalTo & priority 在Masonry 中的使用
  • equalTo
  - (MASConstraint * (^)(id attr))equalTo;
  - (MASConstraint * (^)(id attr))greaterThanOrEqualTo;
  - (MASConstraint * (^)(id attr))lessThanOrEqualTo;
  • priority
 typedef UILayoutPriority MASLayoutPriority;
static const MASLayoutPriority MASLayoutPriorityRequired = UILayoutPriorityRequired;
static const MASLayoutPriority MASLayoutPriorityDefaultHigh = UILayoutPriorityDefaultHigh;
static const MASLayoutPriority MASLayoutPriorityDefaultMedium = 500;
static const MASLayoutPriority MASLayoutPriorityDefaultLow = UILayoutPriorityDefaultLow;
static const MASLayoutPriority MASLayoutPriorityFittingSizeLevel = UILayoutPriorityFittingSizeLevel;

上面這兩個(gè)平常用的不多暂吉,但是偶爾來一下,卻常常是點(diǎn)睛之筆缎患,為我們省下好多事情慕的,特別是解決一些代碼約束沖突的情況。

舉例:

  • 內(nèi)容少就固定寬度较锡,內(nèi)容多就自適應(yīng)
    當(dāng)然這種情況下业稼,是水平方向沒有其他額外的擠壓的情況。
make.width.mas_equalTo(60).priority(MASLayoutPriorityDefaultLow);
make.width.greaterThanOrEqualTo(@60);

相對(duì)來說蚂蕴,后者更為霸道一些低散,此處前者更適合,可以看看實(shí)際效果來對(duì)比用骡楼。

  • 不大于某一個(gè)寬度熔号,又可自適應(yīng)
make.leading.equalTo(self.oneLabel.mas_trailing).offset(20);
make.trailing.mas_equalTo(-20);
make.width.lessThanOrEqualTo(@(40));

這種情況還特別適合用到,某個(gè)大View 中包含小View 時(shí)鸟整,里面的高度不確定引镊,然后又要一一適配,此時(shí)用到lessThanOrEqualTo 可讓沖突很巧妙去掉篮条。

  • 更多例子....

另外注意下: 相同約束下弟头,哪個(gè)先確定,哪一個(gè)的優(yōu)先級(jí)換句話說就越高涉茧。

總的說來赴恨,這也是對(duì)Masonry 的再次熟悉使用!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末伴栓,一起剝皮案震驚了整個(gè)濱河市伦连,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌钳垮,老刑警劉巖惑淳,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異饺窿,居然都是意外死亡歧焦,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門短荐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來倚舀,“玉大人叹哭,你說我怎么就攤上這事忍宋『勖玻” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵糠排,是天一觀的道長舵稠。 經(jīng)常有香客問我,道長入宦,這世上最難降的妖魔是什么哺徊? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮乾闰,結(jié)果婚禮上落追,老公的妹妹穿的比我還像新娘。我一直安慰自己涯肩,他們只是感情好轿钠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著病苗,像睡著了一般疗垛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上硫朦,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天贷腕,我揣著相機(jī)與錄音,去河邊找鬼咬展。 笑死泽裳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的破婆。 我是一名探鬼主播涮总,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼荠割!你這毒婦竟也來了妹卿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤蔑鹦,失蹤者是張志新(化名)和其女友劉穎夺克,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嚎朽,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铺纽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了哟忍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狡门。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡陷寝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出其馏,到底是詐尸還是另有隱情凤跑,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布叛复,位于F島的核電站仔引,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏褐奥。R本人自食惡果不足惜咖耘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望撬码。 院中可真熱鬧儿倒,春花似錦、人聲如沸呜笑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蹈垢。三九已至慷吊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間曹抬,已是汗流浹背溉瓶。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谤民,地道東北人堰酿。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像张足,于是被迫代替她去往敵國和親触创。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • (一)Masonry介紹 Masonry是一個(gè)輕量級(jí)的布局框架 擁有自己的描述語法 采用更優(yōu)雅的鏈?zhǔn)秸Z法封裝自動(dòng)布...
    木易林1閱讀 2,338評(píng)論 0 3
  • Masonry是一個(gè)輕量級(jí)的布局框架为牍,擁有自己的描述語法哼绑,采用更優(yōu)雅的鏈?zhǔn)秸Z法封裝自動(dòng)布局,簡潔明了并具有高可讀性...
    3dcc6cf93bb5閱讀 1,768評(píng)論 0 1
  • [置頂]iOS - Masonry使用中的一些整理 標(biāo)簽:iOS資源大全iOS常用方法iOS學(xué)習(xí)資料Masonry...
    DreamMakerSky閱讀 3,171評(píng)論 0 4
  • Masonry介紹與使用實(shí)踐(快速上手Autolayout) 前言 MagicNumber -> autoresi...
    Bonew01閱讀 560評(píng)論 0 0
  • iOS_autoLayout_Masonry 概述 Masonry是一個(gè)輕量級(jí)的布局框架與更好的包裝AutoLay...
    指尖的跳動(dòng)閱讀 1,165評(píng)論 1 4