我一直在试图两天修改UILabel
的框架,这 是荒谬的......在UILabel
是一个IBOutlet,但是这是不是这个原因 为什么它不工作:我试图以编程方式创建一个UILabel
和 它仍然没有工作。下面是我如何做到这一点:为什么我不能更改我的UILabel的框架?
self.descriptionLabel.text = description;
self.descriptionLabel.lineBreakMode = NSLineBreakByWordWrapping;
CGSize textSize = [self.descriptionLabel.text sizeWithFont:[UIFont systemFontOfSize:12.0]
constrainedToSize:CGSizeMake(self.descriptionLabel.frame.size.width, FLT_MAX)
lineBreakMode:self.descriptionLabel.lineBreakMode];
CGFloat frameHeight = textSize.height;
CGRect frame = self.descriptionLabel.frame;
frame.size.height = frameHeight;
self.descriptionLabel.frame = frame;
CGRect bounds = self.descriptionLabel.frame;
bounds.origin.x = self.descriptionLabel.frame.origin.x + 10.0;
bounds.size.width = self.descriptionLabel.frame.size.width - 20.0;
self.descriptionLabel.bounds = bounds;
self.descriptionLabel.numberOfLines = 0;
我已经问上IRC,他们告诉我,有什么理由 框架不会改变......
我也尝试创建一个框架与CGRectMake
并给它任意 值,但这并没有伎俩要么..
有谁知道可能是什么问题,请?
编辑1:我记录的帧之前和之后,我得到了奇怪的结果:
Before: 0.000000 0.000000 0.000000 0.000000
After: 0.000000 0.000000 0.000000 33525.000000
高度后,我设定的框架是唯一有意义的值(我有很多的文字标签上的目的)。
编辑2:我改变了代码如下,日志说 改变了,但在模拟器上它没有改变;我通过向UILabel
的图层添加红色 边界来证明。
self.descriptionLabel.text = description;
self.descriptionLabel.lineBreakMode = NSLineBreakByWordWrapping;
CGSize textSize = [self.descriptionLabel.text sizeWithFont:[UIFont systemFontOfSize:12.0]
constrainedToSize:CGSizeMake(self.view.frame.size.width, FLT_MAX)
lineBreakMode:self.descriptionLabel.lineBreakMode];
CGFloat frameHeight = textSize.height;
CGRect frame = CGRectMake(0.0, 300.0, self.view.frame.size.width, frameHeight);
self.descriptionLabel.frame = frame;
DDLogInfo(@"After: %f %f %f %f", self.descriptionLabel.frame.origin.x, self.descriptionLabel.frame.origin.y, self.descriptionLabel.frame.size.width, self.descriptionLabel.frame.size.height);
// After: 0.000000 300.000000 320.000000 585.000000
self.descriptionLabel.numberOfLines = 0;
self.descriptionLabel.layer.borderColor = [UIColor redColor].CGColor;
self.descriptionLabel.layer.borderWidth = 2;
你之前和之后记录了帧?你为什么要改变边界(特别是使用框架,它在不同的坐标空间中)? – Wain
我按照你的建议前后记录了框架,并得到了包含在我编辑的问题中的奇怪结果。 –
为什么在最后将行数设置为0? – Abizern