我有一個UILabel,其中lineBreakMode
設置爲UILineBreakModeWordWrap
。這工作正常,除非我有一長串文字沒有空格。在這種情況下,它不包裹長長的文本塊,而是在它到達UILabel幀的右端時將其切斷。我怎麼能告訴UILabel它應該在這種情況下包裝在角色邊界上只有(基本上相當於UILineBreakModeCharacterWrap
設置,但只適用於無空間文本的長板)。UILabel Word Wrap/Character Wrap
在此先感謝!
我有一個UILabel,其中lineBreakMode
設置爲UILineBreakModeWordWrap
。這工作正常,除非我有一長串文字沒有空格。在這種情況下,它不包裹長長的文本塊,而是在它到達UILabel幀的右端時將其切斷。我怎麼能告訴UILabel它應該在這種情況下包裝在角色邊界上只有(基本上相當於UILineBreakModeCharacterWrap
設置,但只適用於無空間文本的長板)。UILabel Word Wrap/Character Wrap
在此先感謝!
你必須做你自己,還有「除非我不希望你使用自動換行」爲沒有選擇:)
如果一個詞太長,你可以前插入空格到它你展示它來幫助標籤知道在哪裏包裝?
這樣做的一種方法是在IB中設置Lines屬性。當你設置的行數爲3的文本換行到那很多線路都佔據
textLabel.lineBreakMode = UILineBreakModeWordWrap;
textLabel.numberOfLines = 3;
所以 -
或代碼做到這一點。
如果他有一個單詞(例如'Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch',它比文本框更寬),那麼OP就會特別想要'自動換行',不管你給它多少行:) – deanWombourne
院長是對的。如果你想要它,你必須手動完成。下面的代碼將wordwrap一個標籤,即使它沒有空格。這可能有助於
NSString *someText = yourLabel.text;
//Check if the text contains spaces
//The method in the below if condition is user defined and you have to define one. lol
if(![self textContainsSpaces:someText])
{
//Do the word wrap manually
CGSize constraintSize;
constraintSize.width = 165;
constraintSize.height = 165;
CGSize stringSize =[someText sizeWithFont: [UIFont boldSystemFontOfSize: 17] constrainedToSize: constraintSize lineBreakMode: UILineBreakModeWordWrap];
CGRect rect = CGRectMake(yourLabel.frame.origin.x, yourLabel.frame.origin.y, 165, (stringSize.height+10));
yourLabel.frame = rect;
}
爲別人有同樣的問題,我最終行動使用UITextView
代替UILabel
的解決它。這是有兩個原因的最佳解決方案:
它不需要任何自定義的行爲,以確定文本是否包含空格和字/字符換改變UILabel
的換行模式/。
更重要的是,有一個邊緣情況下,您可能會有正常的單詞(您想要在單詞邊界上換行)加上超長文本(您需要在字符邊界上換行)。寫一些邏輯來在超長文本中插入空格(在正確的位置)來強制「僞單詞換行」我根本看不到任何處理文字和字符換行的方法,具體取決於情況,在一個UILabel
內。 UITextView
自動處理這種情況,必要時打破字邊界或字符邊界。
關於我如何做這件事的具體細節,我有一行UITextView
,禁用了編輯和滾動功能。我還設置了.contentInset
以刪除填充,使其看起來像(不知情的眼睛),就像UILabel
一樣。然後,我使用sizeWithFont:constrainedToSize:lineBreakMode:
方法來確定渲染文本的幀,並相應地調整UITextView
的幀,以使其完全符合文本。
希望這有助於!
未來的讀者請注意(像我一樣):使用iOS 7和SDK 8進行測試時,UILineBreakModeWordWrap看起來像現在希望的那樣工作。也就是說,如果可能的話,它會通過單詞分解,但如果需要則通過字符分解這個如果用於UILabel。 – eselk