UILabel(标签)
基本属性
创建注意点
- 1.1内容
- 如果没有内容的话且背景颜色和父控件一样,也是看不见它
显示内容 .text(NSString)
UILabel *label = [UILabel alloc] init]; label.text = @"XXXXX";
字体的样式
- 获取系统所有的字体样式
NSArray *fontArray = [UIFont familyNames];
- 字体大小
label.font = [UIFont systemFontOfSize:(CGFloat)fontSize]; label.font = [UIFont systemFontOfSize:(CGFloat)fontSize weight:(CGFloat)weight];
- 黑体(黑体和斜体只能有一个)
label.font = [UIFont boldSystemFontOfSize:(CGFloat)fontSize];
- 斜体(黑体和斜体只能活一个)
label.font = [UIFont italicSystemFontOfSize:(CGFloat)fontSize];
- 根据字体名字设置
label.font = [UIFont fontWithName:(NSString *)fontName size:(CGFloat)fontSize];
- 字体的阴影颜色(default is nil,no shadow)
label.shadowColor = [UIColor ----];
- 获取系统所有的字体样式
显示内容的显示格式 .textAlignment (NSTextAlignment)
- 左对齐(default)
label.textAlignment = NSTextAligmentLeft;
- 居中
label.textAlignment = NSTextAligmentCenter;
- 右对齐
label.textAlignment = NSTextAligmentRight;
- 左对齐(default)
显示内容的缺省形式 .lienBreakMode(NSLineBreakMode)default is NSLineBreakByTruncatingTail
label.lineBreakMode = NSLineBreakByWordWrapping = 0, // Wrap at word boundaries, default NSLineBreakByCharWrapping, // Wrap at character boundaries NSLineBreakByClipping, // Simply clip NSLineBreakByTruncatingHead, // Truncate at head of line: "...wxyz" NSLineBreakByTruncatingTail, // Truncate at tail of line: "abcd..." NSLineBreakByTruncatingMiddle // Truncate middle of line: "ab...yz"
显示内容的行数 .numberOfLines
具体行数
label.numberOfLines = 1; 2; 3;
多行
label.numberOfLines = 0;
常用设置
为了显示完全内容,自动调节字号
// set,点语法 [label setAdjustsFontSizeToFirWidth:YES]; label.adjustsFontSizeToFitWidth = YES;
边框设置
设置边框为弧度
// 1、先设置弧度大小 [label.layer setCornerRadius:(CGFloat) 70]; // 2、为了盖住多出来的部分,矩形变圆的时候边角盖住 [label.layer setMasksToBounds:YES];
边框颜色(注意颜色的类型转换)
// UIColor转成CGColor [label.layer setBorderColor:[[UIColor redColor] CGColor];
边框宽度
[label.layer setBorderWith:(CGFloat) ];
根据文本的属性计算出新的size
方法
- (CGRect)boundingRectWithSize:(CGSize)size // 设定一个大的框架,在这个范围里变化 options:(NSStringDrawingOptions)options // 像下面那样写就行 attributes:(nullable NSDictionary<NSString *, id> *)attributes // 这个是特点,以这个为根据计算出新的size context:(nullable NSStringDrawingContext *)context // nil就行
例子
label.text = @""; // 属性 label.font = [UIFont ....]; label.numberOfLine = 0; [labe.text boundingRectWithSize:CGSizeMake([UIScreen mainScreen].bounds.size.width - 20, 2000) opions: NSStringDrawingUsesLineFragmentOrigin | // 获取行数 NSStringDrawingUsesFontLeading // 这样写就ok attributes:@{NSFontAttributeName:label.font} context:nil].size; // 重新设置size label.frame = CGRectMake(X, Y, size.width, size.height);
自定义一个label(传入内容,框架大小和内容属性)
- (instancetype)initWithFrame:(CGRect)frame withContext:(NSString *)context withFont:(UIFont)font withCGSize:(CGSize)size { if(self = [super initWithFrame:frame]) { self.numberOfLines = 0; self.text = context; self.font = font; CGSize size = [self.text boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttribute:font} context:nil].size; self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, size.width, size.height); } return self; }
尺寸修补
// 数据完成之后 [label sizeToFit];
在做秒表(XIB)的时候,label内容快速变化,会抖抖抖(选中红圈就ok)
添加第三方的字体
- 先将第三方的字体拖入工程中
- 点击info.plist
- 如图:
- 执行代码
label.font = [UIFont fontWithName:@"fontName" size:fontSize];