扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
有时候,我们的label设置的高度比较高,然而文字比较少,这时候文字默认就会水平局左,垂直居中显示,我们都知道UILabel有水平局左,居右,居中的源方法,但是水平的确实没有,这时候的效果就是文字的上面空白很多,下面空白很多,我们只需要写一个UILabel的类就可以实现我们想要的效果,文字局左上角显示,其实很简单:
创新互联公司是一家以网站建设、网页设计、品牌设计、软件运维、营销推广、小程序App开发等移动开发为一体互联网公司。已累计为高空作业车租赁等众行业中小客户提供优质的互联网建站和软件开发服务。
创建一个继承与UILabel的类,只需要在.m中写以下方法就可以
然后利用该类的名字为对象的属性,创建一个UILabel就可以了
实际开发中,我们往往会遇到下面这种label:
我尝试了下面几种方案:
然而很不幸,这招对label的layer无效。
但是你又发现你的图片被裁剪了:
你只看到它:
却不知其实是它:
这招挺实在的,我也无话可说。
用button
1. 创建CGRectrect = CGRectMake(100,200,50,50);
UILabel *label = [[UILabelalloc]initWithFrame:rect];
2. text 设置和读取文本内容,默认为nil
label.text = @”文本信息”; 设置内容
NSLog(@”%@”, label.text) 打印label内容
3. textColor 设置文字颜色,默认为黑色
lable.textColor = [UIColor redColor];
4. font 设置字体大小,默认17
label.font = [UIFont systemFontOfSize:20]; 跟随系统默认字体
label.font=[UIFont boldSystemFontOfSize:20]; 设置字体加粗字号为20的label
label.font=[UIFont fontWithName:@"Arial"size:16]; 指定字体的方法, 还有⼀一种从外部导入字体的方法
5. textAlignment 设置标签文本对齐方式
label.textAlignment = NSTextAlignmentCenter; 设置文本内容居中显示
label.textAlignment = NSTextAlignmentLeft; 设置文本内容居左显示
label.textAlignment = NSTextAlignmentRight; 设置文本内容居右显示
6. numberOfLines 设置文本最多显示行数, 为0则表示行数不限(无限行)
label.numberOfLines = 2; 设置文本内容行数为2行
7. enabled 只是决定了Label的绘制方式,将它设置为NO将会使文本变暗,表示它没有激活,这时向它设置颜色值是无效的, 默认为YES;
label.enable = NO;
8. highlighted 是否高亮显示,默认为NO
label.highlighted = YES;
label.highlightedTextColor = [UIColor orangeColor]; 高亮显示时的文本颜色
9. ShadowColor 设置阴影颜色
[label setShadowColor:[UIColorblackColor]];
10. ShadowOffset 设置阴影偏移量
[label setShadowOffset:CGSizeMake(-1,-1)];
11. baselineAdjustment
如果adjustsFontSizeToFitWidth属性设置为YES,这个属性就来控制文本基线的行为。
label.baselineAdjustment = UIBaselineAdjustmentNone;
UIBaselineAdjustmentAlignBaselines = 0默认,文本最上端与中线对齐。
UIBaselineAdjustmentAlignCenters,文本中线与label中线对齐。
UIBaselineAdjustmentNone,文本最低端与label中线对齐。
12. Autoshrink 是否自动收缩FixedFontSize 默认,如果Label宽度小于文字长度时,文字大小不自动缩放minimumScaleFactor 设置最小收缩比例,如果Label宽度小于文字长度时,文字进行收缩,收缩超过比例后,停止收缩。minimumFontSize 设置最小收缩字号,如果Label宽度小于文字长度时,文字字号减小,低于设定字号后,不再减小。//6.0以后不再使用了。
label.minimumScaleFactor = 0.5;
13. adjustsLetterSpacingToFitWidth
改变字母之间的间距来适应Label大小
label.adjustsLetterSpacingToFitWidth = NO;
14. lineBreakMode 设置文字过长时的显示格式
label.lineBreakMode = NSLineBreakByCharWrapping;以字符为显示单位显示,后面部分省略不显示。
label.lineBreakMode=NSLineBreakByClipping;剪切与文本宽度相同的内容长度,后半部分被删除。
label.lineBreakMode=NSLineBreakByTruncatingHead;前面部分文字以……方式省略,显示尾部文字内容。
label.lineBreakMode=NSLineBreakByTruncatingMiddle;中间的内容以……方式省略,显示头尾的文字内容。
label.lineBreakMode=NSLineBreakByTruncatingTail;结尾部分的内容以……方式省略,显示头的文字内容。
label.lineBreakMode=NSLineBreakByWordWrapping;以单词为显示单位显示,后面部分省略不显示。
15. adjustsFontSizeToFitWidth 设置字体大小适应label宽度
label.adjustsFontSizeToFitWidth = YES;
16. attributedText 设置标签属性文本。
NSString*text=@"first";
NSMutableAttributedString *textLabelStr = [[NSMutableAttributedStringalloc]initWithString:text];
[textLabelStrsetAttributes:@{NSForegroundColorAttributeName[UIColorlightGrayColor],NSFontAttributeName: [UIFontsystemFontOfSize:17]} range:NSMakeRange(11,10)];
label.attributedText = textLabelStr;
17. 竖排文字显示每个文字加一个换行符,这是最方便和简单的实现方式。
label.text=@"请\n竖\n直\n方\n向\n排\n列";
label.numberOfLines = [label.text length];(可以直接设置成数字)
18. 计算UIlabel 随字体多行后的高度
CGRect bounds = CGRectMake(0,0,200,300);
heightLabel = [label textRectForBounds:bounds limitedToNumberOfLines:20];计算20行后的Label的Frame
NSLog(@"%f",heightLabel.size.height);
19. UILabel根据字数多少自动实现适应高度
UILabel*msgLabel = [[UILabel alloc] initWithFrame:CGRectMake(15,45,0,0)];
msgLabel.backgroundColor=[UIColor lightTextColor];
[msgLabel setNumberOfLines:0];
msgLabel.lineBreakMode = UILineBreakModeWordWrap;
msgLabel.font = [UIFont fontWithName:@"Arial"size:12];
CGSize size = CGSizeMake(290,1000);
msgLabel.text = @"一个人 一首歌 一杯酒 一支烟 一部手机 一台电脑 一杯清茶 一路清贫 一路走 一路停 一个远方 一个你还没到来 万世孤独";
CGSize msgSie = [msgLabel.text sizeWithFont:fontsconstrainedToSize:size];
[msgLabel setFrame:CGRectMake(15,45,290,msgSie.height)];
20. 渐变字体
LabelUIColor *titleColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"btn.png"]];
NSString *title = @"Setting";
UILabel*titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(0,0,80,44)];
titleLabel.textColor=titleColor;
titleLabel.text = title;
titleLabel.font = [UIFont boldSystemFontOfSize:20];
titleLabel.backgroundColor=[UIColor clearColor];
[self.view addSubview:titleLabel];
21. Label添加边框
titleLabel.layer.borderColor = [[UIColor grayColor] CGColor];
titleLabel.layer.borderWidth = 2;
22. 设置label内边距
.h文件
@interface DrawRectLabel : UILabel
@property ( nonatomic , assign ) UIEdgeInsets edgeInsets;
@end
.m文件 需要重写方法: - ( void )drawTextInRect:(CGRect)rect
- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines{
UIEdgeInsetsinsets = self .edgeInsets;
CGRect rect = [ super textRectForBounds:UIEdgeInsetsInsetRect(bounds, insets)limitedToNumberOfLines:numberOfLines];
rect.origin.x -= insets.left;
rect.origin.y -= insets.top;
rect.size.width += (insets.left+ insets.right);
rect.size.height+= (insets.top+ insets.bottom);
return rect;
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流