您的位置:首页 > 移动开发 > IOS开发

iOS boundingRectWithSize使用

2015-11-25 14:17 951 查看
方法原型:

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable
NSDictionary<NSString *,
id> *)attributes context:(nullable
NSStringDrawingContext *)context
NS_AVAILABLE(10_11, 7_0);

#import "mylabel.h"

@implementation mylabel

- (void)drawRect:(CGRect)rect {

[super drawRect:rect];

/*在label上画一条线

1.获取到上下文CGContextRef

2.设置画线的起点位置

3.画线,画到另一个点的位置

4.渲染到屏幕上面

*/

CGContextRef context=UIGraphicsGetCurrentContext();

CGContextMoveToPoint(context, 0, rect.size.height/2);

CGContextAddLineToPoint(context, rect.size.width, rect.size.height/2);

CGContextStrokePath(context);

}

mylabel *label=[[mylabel
alloc]initWithFrame:CGRectZero];

NSString *s=@"红红火火测试测试";

label.text=s;

[label setNumberOfLines:0];

UIFont *font=[UIFont
fontWithName:@"Arial"
size:20];

label.font=font;

CGSize size=CGSizeMake(MAXFLOAT, 0);

NSDictionary *attribute = @{NSFontAttributeName: font};

//NSStringDrawingTruncatesLastVisibleLine

//如果文本内容超出指定的矩形限制,文本将被截去并在最后一个字符后加上省略号

//NSStringDrawingUsesFontLeading

//计算行高时使用行间距。(译者注:字体大小+行间距=行高)

//NSStringDrawingUsesLineFragmentOrigin

//绘制文本时使用 line fragement origin
而不是 baseline origin

CGSize labelsize=[s
boundingRectWithSize:size options:NSStringDrawingTruncatesLastVisibleLine |

NSStringDrawingUsesLineFragmentOrigin |

NSStringDrawingUsesFontLeading
attributes:attribute context:nil].size;

[label setFrame:CGRectMake(100, 200, labelsize.width, labelsize.height)];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: