亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

UILabel sizeToFit不適用于autolayout ios6

UILabel sizeToFit不適用于autolayout ios6

素胚勾勒不出你 2019-07-23 16:05:10
UILabel sizeToFit不適用于autolayout ios6我應該如何以編程方式(以及在哪種方法中)配置UILabel,其高度取決于其文本?我一直在嘗試使用Storyboard和代碼的組合進行設置,但無濟于事。每個人都建議sizeToFit在設置lineBreakMode和numberOfLines。但是,不管我把代碼viewDidLoad:,viewDidAppear:或者viewDidLayoutSubviews我不能讓它開始工作。要么我的盒子太小而不能長文本也不會長,或者我把它做得太大而且不會縮小。
查看完整描述

3 回答

?
烙印99

TA貢獻1829條經驗 獲得超13個贊

在大多數情況下,Matt的解決方案按預期工作。但如果它不適合你,請進一步閱讀。

要使標簽自動調整高度,您需要執行以下操作:

  1. 設置標簽的布局約束

  2. 設置低優先級的高度約束。它應該低于ContentCompressionResistancePriority

  3. 設置numberOfLines = 0

  4. 將ContentHuggingPriority設置為高于label的高度優先級

  5. 為label選擇preferredMaxLayoutWidth。標簽使用該值來計算其高度

例如:

self.descriptionLabel = [[UILabel alloc] init];

self.descriptionLabel.numberOfLines = 0;

self.descriptionLabel.lineBreakMode = NSLineBreakByWordWrapping;

self.descriptionLabel.preferredMaxLayoutWidth = 200;


[self.descriptionLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical];

[self.descriptionLabel setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical];

[self.descriptionLabel setTranslatesAutoresizingMaskIntoConstraints:NO];

[self addSubview:self.descriptionLabel];


NSArray* constrs = [NSLayoutConstraint constraintsWithVisualFormat:@"|-8-[descriptionLabel_]-8-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(descriptionLabel_)];

[self addConstraints:constrs];

[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-8-[descriptionLabel_]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(descriptionLabel_)]];

[self.descriptionLabel addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[descriptionLabel_(220@300)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(descriptionLabel_)]];


使用Interface Builder

  1. 設置四個約束。高度約束是強制性的。 

  2. 然后轉到標簽的屬性檢查器并將行數設置為0。 

  3. 轉到標簽的大小檢查器并增加垂直ContentHuggingPriority和垂直ContentCompressionResistancePriority。

  4. 選擇并編輯高度約束。

  5. 并降低高度約束優先級。

請享用。:)


查看完整回答
反對 回復 2019-07-23
?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

在iOS 6中,使用自動布局,如果UILabel的邊(或寬度)和頂部被固定,它將自動垂直增長和縮小以適合其內容,完全沒有代碼,也沒有解除其抗壓性等問題。這很簡單。

在更復雜的情況下,只需設置標簽即可preferredMaxLayoutWidth。

無論哪種方式,正確的事情都會自動發生。


查看完整回答
反對 回復 2019-07-23
?
莫回無

TA貢獻1865條經驗 獲得超7個贊

在IOS7中注意到sizeToFit也不起作用 - 也許解決方案也可能對你有所幫助

[textView sizeToFit];[textView layoutIfNeeded];


查看完整回答
反對 回復 2019-07-23
  • 3 回答
  • 0 關注
  • 906 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號