固定UILabel宽度分行显示
生活随笔
收集整理的這篇文章主要介紹了
固定UILabel宽度分行显示
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
固定UILabel寬度分行顯示
這種小伎倆估計都被用爛了,筆者給大家提供一個category文件,供大家簡單設置哦.
各種富文本效果哦(普通文本也是可以用的呢):
3行,固定寬度200
2行,固定寬度200
無限行,固定寬度250
無限行,固定寬度250,設置段落樣式
源碼:
UILabel+SizeToFit.h? 與? UILabel+SizeToFit.m
// // UILabel+SizeToFit.m // SizeToFit // // Copyright (c) 2014年 Y.X. All rights reserved. //#import "UILabel+SizeToFit.h"@implementation UILabel (SizeToFit) - (void)fixWidth:(CGFloat)widthposition:(CGPoint)positionnumberOfLines:(NSInteger)lineslineBreakMode:(NSLineBreakMode)mode {CGRect newRect = self.frame;newRect.size.width = width;newRect.origin = position;self.frame = newRect;self.numberOfLines = lines;self.lineBreakMode = mode;[self sizeToFit]; }@end
使用的源碼(注,此處用到了自己寫的一些源碼,請君自行替換):
// // RootViewController.m // SizeToFit // // Copyright (c) 2014年 Y.X. All rights reserved. //#import "RootViewController.h" #import "UILabel+SizeToFit.h" #import "FontPool.h"@interface RootViewController ()@end@implementation RootViewController- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];if (self) {}return self; }- (void)viewDidLoad {[super viewDidLoad];self.view.backgroundColor = [UIColor blackColor];// 注冊字體REGISTER_FONT(bundleFont(@"新蒂小丸子體.ttf"), @"新蒂小丸子體");// 設置段落樣式NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];style.firstLineHeadIndent = 14.f * 2;// 設置富文本NSString *testStr = @"如果我有尾巴的話 —— 說起來有點不好意思,只要和你在一起,一定會止不住搖起來的吧。";NSArray *array \= @[[ConfigAttributedString font:[UIFont fontWithName:CUSTOM_FONT(@"新蒂小丸子體", 0) size:12.f]range:[testStr range]],[ConfigAttributedString foregroundColor:[UIColor whiteColor]range:[testStr range]],[ConfigAttributedString paragraphStyle:stylerange:[testStr range]],[ConfigAttributedString font:[UIFont fontWithName:CUSTOM_FONT(@"新蒂小丸子體", 0) size:14.f]range:[@"如果我有尾巴的話" rangeFrom:testStr]],[ConfigAttributedString foregroundColor:[UIColor redColor]range:[@"如果我有尾巴的話" rangeFrom:testStr]]];// 創建labelUILabel *label = [UILabel new];// 設置富文本label.attributedText = [testStr createAttributedStringAndConfig:array];// 0行,固定寬度200[label fixWidth:250position:CGPointMake(50, 100)numberOfLines:0lineBreakMode:NSLineBreakByTruncatingMiddle];[self.view addSubview:label]; }@end
核心代碼處:
注意,只有執行了sizeToFit才是解決問題的關鍵所在:
就是這么簡單:)
總結
以上是生活随笔為你收集整理的固定UILabel宽度分行显示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python问答环节(2)
- 下一篇: 窗口二