UIImage中的UILabel文本被截断

时间:2012-10-03 14:46:20

标签: objective-c ios uilabel

我将UILabel放入自定义UIImageView,文字正在被删除:

screenshot

代码:

//self.frame.size.width and height are the same value, self is a square
self.displayNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, (self.frame.size.width - 12), (self.frame.size.height - 12))];
self.displayNameLabel.center = CGPointMake((self.frame.size.width / 2), (self.frame.size.height / 2));
self.displayNameLabel.backgroundColor = [UIColor whiteColor];
self.displayNameLabel.textAlignment = UITextAlignmentCenter;
self.displayNameLabel.font = [UIFont fontWithName:labelFont size:40];
self.displayNameLabel.adjustsFontSizeToFitWidth = YES;

我将字体大小设置为大,然后使用adjustsFontSizeToFitWidth确保它尽可能大。它声明:

  

但是,如果此属性设置为YES,并且text属性中的文本超出了标签的边界矩形,则接收器开始缩小字体大小,直到字符串适合

如果我将label.frame设置为:

self.displayNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, (self.frame.size.width - 0), (self.frame.size.height - 0))];

然后按预期工作。

如何将框架设置为:

self.frame.size.width
self.frame.size.height 

而不是:

self.frame.size.width - 14 
self.frame.size.height - 14

工作?

为什么它被剪裁在顶部?

2 个答案:

答案 0 :(得分:2)

您可能需要相应地设置标签的autoresizingMask属性,以便在调整图像大小时,正确调整标签的框架。或者,您应该在任何视图上添加图像后调用标签上的setNeedsDisplay

答案 1 :(得分:2)

属性adjustsFontSizeToFitWidth只会使标签调整字体大小,直到字符串的宽度适合框架。如果标签不够高,无法容纳最终字体大小,则会剪裁。