一 UILabel
文本标签的作用是用于显示文字,常用有以下
//显示的文字
@property(nonatomic,copy) NSString *text;
//显示文字的字体
@property(nonatomic,retain) UIFont *font;
//文字颜色
@property(nonatomic,retain) UIColor *textColor;
//文字对齐模式
@property(nonatomic) NSTextAlignment textAlignment;
二 UIFont
UIFont用于设置字体,常用创建方法有以下几个:
//系统字体 fontSize 是设置字体大小
+ (UIFont *)systemFontOfSize:(CGFloat)fontSize;
//粗体字体
+ (UIFont *)boldSystemFontOfSize:(CGFloat)fontSize;
//斜体字体
+ (UIFont *)italicSystemFontOfSize:(CGFloat)fontSize;
三 根据文本获取文本占用的长宽
1 IOS 提供了根据文本获取文本占用的长宽方法
- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context NS_AVAILABLE_IOS(7_0);
2 参数说明
2.1 size 文本能占用的最大宽高
2.2 options 计算方式,系统提供了四中计数方式
//如果文本内容超出指定的矩形限制,文本将被截去并在最后一个字符后加上省略号
NSStringDrawingTruncatesLastVisibleLine
//常用,文本将以每行组成的矩形为单位计算整个文本的尺寸
NSStringDrawingUsesLineFragmentOrigin
//计算行高时使用行间距
NSStringDrawingUsesFontLeading
//使用图元字形
NSStringDrawingUsesDeviceMetrics
2.3 attributes 字体和大小
2.4 context 一般设置为nil
3 注意
计算的文本超过了给定的最大的宽高,就返回最大宽高,没有超过,就返回真实占用的宽高
4实例
//需要计算长宽的字符
NSString *string = @"hello world1”;
//设置字体的大小
UIFont *font = [UIFont systemFontOfSize:20];
NSDictionary *dict = @{NSFontAttributeName:font};
//设置文本能占用的最大宽高
CGSize maxSize = CGSizeMake(MAXFLOAT, MAXFLOAT);
CGRect rect = [string boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:dict context:nil];
四 实例
1.代码(通过代码,掌握UILabel UIFont 文本长宽计数)
#import "ViewController.h"
#define GMTextFont [UIFont systemFontOfSize:10]
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
/**** UILable ****/
//1 创建第一个UILabel fontSize 为 10
[self label:@"hello world1" font:GMTextFont textColer:[UIColor blueColor] point:CGPointMake(10, 20)];
//2 创建第二个UILabel fontSize 为 20
UIFont *font2 = [UIFont systemFontOfSize:20];
[self label:@"hello world2" font:font2 textColer:[UIColor blackColor] point:CGPointMake(10, 40)];
//3 创建第三个UILabel fontSize 为 20 字体为 粗体
UIFont *font3 = [UIFont boldSystemFontOfSize:20];
[self label:@"hello world3" font:font3 textColer:[UIColor greenColor] point:CGPointMake(10, 60)];
//4 创建第三个UILabel fontSize 为 40 字体为 斜体
UIFont *font4 = [UIFont italicSystemFontOfSize:40];
[self label:@"hello world4" font:font4 textColer:[UIColor grayColor] point:CGPointMake(10, 80)];
}
#pragma mark label系统
-(void)label:(NSString *)text font:(UIFont *)font textColer:(UIColor *)color point:(CGPoint)point
{
//1.创建lable
UILabel *label= [[UILabel alloc]init];
//2.设置 文字
[label setText:text];
//3.设置字体
[label setFont:font];
//4.设置文字颜色
[label setTextColor:color];
//5.设置对齐模式
[label setTextAlignment:NSTextAlignmentCenter];
//6 根据文本计数占用宽高
CGSize size = CGSizeMake(MAXFLOAT, MAXFLOAT);
CGSize fontSize = [self sizeWithString:text font:font maxSize:size];
//7 设置label x,y,w,h
label.frame=CGRectMake(point.x,point.y,fontSize.width,fontSize.height);
//8 添加到view 中
[self.view addSubview:label];
}
/**
* 根据文本获取文本占用的大小
*
* @param string 文本
* @param font 字体
* @param maxSize 最大的宽高
*
*
* 说明:
*
* - (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context NS_AVAILABLE_IOS(7_0);
*
* size:文本能占用的最大宽高
* options: 计算方式
* attributes: 字体和大小
* context: nil
* 计算的文本超过了给定的最大的宽高,就返回最大宽高,没有超过,就返回真实占用的宽高
*
*/
- (CGSize)sizeWithString:(NSString *)string font:(UIFont *)font maxSize:(CGSize)maxSize
{
NSDictionary *dict = @{NSFontAttributeName:font};
CGRect rect = [string boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:dict context:nil];
return rect.size;
}
@end