取巧處理:UILabel(IOS開發(fā)) 超出寬度的文本省略號的問題

UILabel 默認情況下,單行文本、使用固定寬高、固定字體的時候,超出的文本會被省略號代替,但對于某些設(shè)計中,省略號是不需要的(設(shè)計合理性不在本文討論范圍內(nèi))。考慮的采取幾種方式:

默認情況


UILabel默認情況

方式一:設(shè)置 lineBreakMode


self.label1.lineBreakMode = NSLineBreakByWordWrapping;

最后一個字顯示得不完整...no

方式二:提前計算UILabel 可容納的字數(shù)


實現(xiàn)可行,但總覺得每次渲染都得重新計算,這有多麻煩

方式三:取巧,使用UITextView 代替UILabel:


UITextView 是文本域的顯示組件,默認情況不存在最后一個字的溢出問題(折到第2行了),但UITextView 本身比UIlabel 可響應(yīng)用戶的操作更多,所以需要做一些設(shè)置才能保障正常的事件響應(yīng)(尤其在Cell 里面的時候)

示例(僅貼出主要差異部分)


CGFloat labelHeight = 22;
CGFloat fontSize = 15;
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.maximumLineHeight = labelHeight;
paragraphStyle.minimumLineHeight = labelHeight;
paragraphStyle.lineSpacing = labelHeight/2.0f;
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;

NSAttributedString *aString = [[NSAttributedString alloc] initWithString:@"測試文字1標題測試" attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:fontSize],NSForegroundColorAttributeName:[UIColor whiteColor],NSBaselineOffsetAttributeName:[NSNumber numberWithFloat:labelHeight/2.0f],NSParagraphStyleAttributeName:paragraphStyle}];
self.demoTextView.userInteractionEnabled = NO;
[self.demoTextView resignFirstResponder];
self.demoTextView.contentInset = UIEdgeInsetsMake(0, -4, 0, 0);
self.demoTextView.attributedText = aString;

最終效果:

最后一個字被折行

注意點:
1.使用NSAttributedString對文本設(shè)置相應(yīng)的樣式和行高、行距;
2.禁止userInteractionEnabled,防止UITextView的事件響應(yīng)(編輯、選擇);
3.resignFirstResponder,設(shè)為非第一響應(yīng)者,在cell中尤其重要,否則點擊文字無法觸發(fā)cell 的 didSelected 的事件;
4.相比UILabel,內(nèi)存占用多一些,尤其在大量cell中使用時。

懶也是一種生產(chǎn)力

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

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

  • 注:新添加一個富文本方法,在文字只有一行的時候,取消行間距! 把下面兩個方法隨便放到一個公共的文件里,在.h聲明這...
    xiao小馬哥閱讀 4,341評論 0 5
  • { 24、Sqlite數(shù)據(jù)庫 1、存儲大數(shù)據(jù)量,增刪改查,常見管理系統(tǒng):Oracle、MSSQLServer、DB...
    CYC666閱讀 1,053評論 0 1
  • 總有那么一些時刻讓已婚的人覺得婚姻是愛情的墳?zāi)?,也總有一些時刻讓未婚的人特別渴望婚姻,在這些時刻里,我們對婚姻的思...
    大笛笛噠閱讀 281評論 0 0
  • 晚上十點鐘,隨著宿管老師手法嫻熟“啪”的一聲拉閘,xx大學整個宿舍樓區(qū)陷入一片漆黑,錦繡園女生公寓內(nèi)女孩子特有的尖...
    菀彼青青閱讀 1,948評論 13 12
  • 算算加入小灶群已經(jīng)有五個月的時間了,時間過得真快,這段時間我很少看電視,很少上網(wǎng)閑聊天,網(wǎng)購也幾乎沒有了,更多的時...
    遇見靖雯閱讀 2,520評論 3 13

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