制作具有最大宽度的可变大小 UILabel
Making variable size UILabel with maximum width
我使用以下代码制作了可变大小 UILabel
。
但我想将最大宽度设置为 label
.
你有什么想法吗?
- (void)viewDidLoad {
CGSize size = [self labelFrameWithString:@"test text"];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, size.width. size.height];
label.text = @"test text";
}
- (CGSize)labelFrameWithString:(NSString *)string {
CGRect frame = [string boundingRectWithSize:CGSizeZero
options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine)
attributes:[NSDictionary dictionaryWithObject:[UIFont systemFontOfSize:16] forKey:NSFontAttributeName]
context:nil];
return frame.size;
}
您是否尝试传递受约束的 CGSize 而不是 CGSizeZero?
CGSize constraint = CGSizeMake(your_max_width ,NSUIntegerMax);
CGRect frame = [string boundingRectWithSize:constraint
options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine)
attributes:[NSDictionary dictionaryWithObject:[UIFont systemFontOfSize:16] forKey:NSFontAttributeName]
context:nil];
我使用以下代码制作了可变大小 UILabel
。
但我想将最大宽度设置为 label
.
你有什么想法吗?
- (void)viewDidLoad {
CGSize size = [self labelFrameWithString:@"test text"];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, size.width. size.height];
label.text = @"test text";
}
- (CGSize)labelFrameWithString:(NSString *)string {
CGRect frame = [string boundingRectWithSize:CGSizeZero
options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine)
attributes:[NSDictionary dictionaryWithObject:[UIFont systemFontOfSize:16] forKey:NSFontAttributeName]
context:nil];
return frame.size;
}
您是否尝试传递受约束的 CGSize 而不是 CGSizeZero?
CGSize constraint = CGSizeMake(your_max_width ,NSUIntegerMax);
CGRect frame = [string boundingRectWithSize:constraint
options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine)
attributes:[NSDictionary dictionaryWithObject:[UIFont systemFontOfSize:16] forKey:NSFontAttributeName]
context:nil];