我得到的CGSize
高度比标签字体长。
我想删除文本和UILabel边缘之间的顶部/左/右/底部填充,以便UILabel框架适合它包含的文本。
这是我正在使用的代码......
NSString *ad=@"hello";
NSDictionary *fontAttributes = @{NSFontAttributeName : [UIFont systemFontOfSize:50]};
CGSize textSize = [ad sizeWithAttributes:fontAttributes];
bc =[[UILabel alloc]initWithFrame:CGRectMake(20, 25, textSize.width, textSize.height)];
bc.font= [UIFont systemFontOfSize:50];
bc.text=ad;
bc.layer.borderColor = [UIColor blackColor].CGColor;
bc.layer.borderWidth = 1.0;
[self.tap addSubview:bc];
答案 0 :(得分:1)
您无需让CGSize
textSize分配UILabel
。
在标签中使用自动布局:
numberOfLines
属性设置为0 preferredMaxLayout
宽度(如果您的开发目标< iOS8)答案 1 :(得分:0)
如果已在视图中拖动它,可以通过设置sizeToFitContent的属性来执行此操作。以编程方式,您可以尝试sizeToFit。
答案 2 :(得分:0)
试试这个:
NSString *mytext = @"some random text";
UILabel *someLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 100, 280, 100)];
someLabel.text = mytext;
someLabel.backgroundColor = [UIColor clearColor];
someLabel.lineBreakMode = NSLineBreakByWordWrapping;
[self.view addSubview:someLabel];
// For single line
someLabel.numberOfLines = 1;
someLabel.minimumScaleFactor = 8;
someLabel.adjustsFontSizeToFitWidth = YES;
// For multiple lines
someLabel.numberOfLines = 0;
someLabel.lineBreakMode = NSLineBreakByWordWrapping;
CGSize maximumLabelSize = CGSizeMake(someLabel.frame.size.width, CGFLOAT_MAX);
CGSize expectSize = [someLabel sizeThatFits:maximumLabelSize];
someLabel.frame = CGRectMake(someLabel.frame.origin.x, someLabel.frame.origin.y, expectSize.width, expectSize.height);