iOS开发中使用UILabel设置字体的相关技巧小结

建海集团

建海集团

2016-02-19 09:15

今天给大家分享的是由图老师小编精心为您推荐的iOS开发中使用UILabel设置字体的相关技巧小结,喜欢的朋友可以分享一下,也算是给小编一份支持,大家都不容易啊!

一、初始化
代码如下:

UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(40, 40, 120, 44)];
    
[self.view addSubview:myLabel];

二、设置文字

1、设置默认文本
代码如下:

NSString *text = @"标签文本";
myLabel.text = text;

效果:

2、设置标签文本(此属性是iOS6.0之后才出现,如若不是必要,不建议使用此属性)
代码如下:

NSString *text = @"其实没什么";
    
NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:text];
    
[attributeString setAttributes:@{NSForegroundColorAttributeName : [UIColor redColor],   NSFontAttributeName : [UIFont systemFontOfSize:17]} range:NSMakeRange(2, 1)];
    
myLabel.attributedText = attributeString;

效果:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

关键字标红的效果
代码如下:

NSString *keyword = @"开源";
NSString *result = @"开源中国社区";
 
// 设置标签文字
NSMutableAttributedString *attrituteString = [[NSMutableAttributedString alloc] initWithString:result];
 
// 获取标红的位置和长度
NSRange range = [result rangeOfString:keyword];
 
// 设置标签文字的属性
[attrituteString setAttributes:@{NSForegroundColorAttributeName : [UIColor redColor],   NSFontAttributeName : [UIFont systemFontOfSize:17]} range:range];
 
// 显示在Label上
label.attributedText = attrituteString;

3、设置字体,如果是使用②中的文本,那在设置AttributeString的属性时已经设置过Font了和textColor了,直接使用①设置文本时设置文本时,设置字体方法
代码如下:

myLabel.font = [UIFont systemFontOfSize:13];

4、设置颜色
代码如下:

myLabel.textColor = [UIColor blueColor];

5、设置对齐方式
代码如下:

myLabel.textAlignment = NSTextAlignmentCenter;//居中

NSTextAlignmentLeft //左对齐
NSTextAlignmentCenter //居中
NSTextAlignmentRight  //右对齐
NSTextAlignmentJustified//最后一行自然对齐
NSTextAlignmentNatural //默认对齐脚本

NSTextAlignmentJustified和 NSTextAlignmentNatural用的时候会报错,程序崩溃,暂时不知道什么时候可以使用,希望知道的指教一下,感激不尽。
5、文字剪裁方式
代码如下:

NSLineBreakByWordWrapping = 0,//以空格为边界,保留单词
NSLineBreakByCharWrapping,    //保留整个字符
NSLineBreakByClipping,        //简单剪裁,到边界为止
NSLineBreakByTruncatingHead,  //按照"……文字"显示
NSLineBreakByTruncatingTail,  //按照"文字……文字"显示
NSLineBreakByTruncatingMiddle //按照"文字……"显示

myLabel.lineBreakMode = NSLineBreakByTruncatingHead;

7、设置Label enabled属性
如果设置为No,则文字颜色会变暗,表明其是不可用的,默认值为YES。
代码如下:

myLabel.enabled = NO;

三、匹配Label上的文字
1、是否根据文本宽度改变字体大小
代码如下:

myLabel.adjustsFontSizeToFitWidth = YES;
//假设文字内容为@"曾在月光之下望烟花,曾共看夕阳渐降下",Label长度为200,则一行显示不下,若设置此属性为YES,则会降低字体大小,以显示全部内容。

前后对比:

2、改变字母之间的间距来适应label大小
代码如下:

//当这个属性是YES,标签可能改变标签文本的字母间距,以使该文本更适合标签的边界内。此属性的字符串,而不管当前行的行的裁剪模式。该属性的默认值是NO。
myLabel.adjustsLetterSpacingToFitWidth = NO;
 
//个人使用了一下,没发现有什么区别,不知道具体是什么时候发挥作用。

3、设置对齐基线
代码如下:

myLabel.adjustsFontSizeToFitWidth = YES;//调整基线位置需将此属性设置为YES

myLabel.baselineAdjustment = UIBaselineAdjustmentAlignBaselines;

此属性有三个值可选
代码如下:

UIBaselineAdjustmentAlignBaselines //文本最上端与Label中线对齐,默认值
UIBaselineAdjustmentAlignCenters   //文本中线与Label中线对齐
UIBaselineAdjustmentNone           //文本最下端与Label中线对齐

4、最小字体大小,当字体小于这个最小值时无效,显示此属性值
iOS6.0之前:minimumFontSize

iOS6.0之后:minimumScaleFactor
代码如下:

myLabel.minimumScaleFactor = 10.0;//默认值为0,为当前字体大小

5、行数
代码如下:

myLabel.numberOfLines = 2;//Label行数

6、高亮
代码如下:

myLabel.highlighted = YES;//是否高亮
myLabel.highlightedTextColor = [UIColor redColor];//高亮颜色;此属性在设置按钮的titleLabel时,无论highlighted是YES还是NO,在按钮按下时标题都显示此高亮颜色

7、阴影
代码如下:

myLabel.shadowColor = [UIColor grayColor];//阴影颜色,默认为nil
myLabel.shadowOffset = CGSizeMake(1, 1);//阴影的偏移点

四、Label位置
1、计算UIlabel 随字体多行后的高度
代码如下:

CGRect result,bounds;
bounds = CGRectMake(0, 0,200, 300);
heightLabel = [myLabel textRectForBounds:bounds limitedToNumberOfLines:20];//计算20行后的Label的Frame
NSLog(@"%f",heightLabel.size.height);

2、绘制text到指定区域
代码如下:

- (void)drawTextInRect:(CGRect)rect
//需要重载此方法,然后由子类调用,重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了

PS:关于字体名字的问题
在iOS下使用自定义字体比较蛋疼的就是名字不知道是什么,大部分字体可以在打开字体册就可以看到,如正常的XXX-Regular,但有时候名字并不是这个,有可能是XXX而已,还有可能是XXXItalic(而不是XXX-Italic)。名字错了,建立的字体肯定是空的。

那怎么办呢?

有办法的,有一段代码可以把当前所有的字体名字输出来。

如:

1.把XXX字体加入到resouce;

2.Info.plist的Fonts provided by application里面加入字体文件名

3.运行下面代码
代码如下:

    NSArray *familyNames = [UIFont familyNames];
    for( NSString *familyName in familyNames ){
        printf( "Family: %s n", [familyName UTF8String] );
        NSArray *fontNames = [UIFont fontNamesForFamilyName:familyName];
        for( NSString *fontName in fontNames ){
            printf( "tFont: %s n", [fontName UTF8String] );
        }
    }

4.找到你的字体XXX,如下,Font:后面的就是我们要的字体名字

Family: Courier New   Font: CourierNewPSMT   Font: CourierNewPS-BoldMT   Font: CourierNewPS-ItalicMT   Font: CourierNewPS-BoldItalicMT Family: Oriya Sangam MN   Font: OriyaSangamMN   Font: OriyaSangamMN-Bold

5.自然是使用,如
代码如下:

UIFont *font_regular = [UIFont fontWithName:@"CourierNewPS-ItalicMT" size:84];

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

iOS开发中使用UILabel设置字体的相关技巧小结

编程语言 网络编程
iOS开发中使用UILabel设置字体的相关技巧小结

iOS开发中使用屏幕旋转功能的相关方法

编程语言 网络编程
iOS开发中使用屏幕旋转功能的相关方法

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

针对iOS开发的一些Xcode使用技巧小结

编程语言 网络编程
针对iOS开发的一些Xcode使用技巧小结

详解iOS开发中Keychain的相关使用

编程语言 网络编程
详解iOS开发中Keychain的相关使用

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

深入了解iOS开发中UIWindow的相关使用

编程语言 网络编程
深入了解iOS开发中UIWindow的相关使用

在FLASH中使用像素字体技巧

电脑网络
在FLASH中使用像素字体技巧

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Oracle 数据 使用游标

Oracle 数据 使用游标

doctype后如何获得body.clientHeight的方法

doctype后如何获得body.clientHeight的方法
下拉加载更多内容 ↓