我有一段代码,每次发生后端数据库更改时都会执行。本质上,我在父视图中有一个标签。标签会通过许多状态消息之一进行更新,每条状态消息都在另一行中以新行(\ n)结尾。每条状态消息仅需在一行上,而不能翻阅。
我遇到的问题是,在视图第一次重新加载时,一切正常。但是,当我在屏幕上并且背景发生变化时,状态消息有时会显示在多行上。虽然sizeToFit在使标签与包含父视图的视图一样高的方面做得很好,但在宽度方面却做得很差。就是说它将分散多行文本,而不是仅查看换行符。
我能做什么?
self.messageLabel.text = message; //lets get the status message.
[self.messageLabel sizeToFit];
[self.messageLabel setNeedsDisplay];
CGRect frame = [self.messageView frame];
frame.size.height = self.messageLabel.bounds.size.height;
self.messageView.frame = frame;
self.messageLabel.center = CGPointMake(CGRectGetMidX(self.messageView.bounds), CGRectGetMidY(self.messageView.bounds)-(self.messageView.cornerRadius/4));
self.messageLabel.backgroundColor = [UIColor orangeColor];
[self.messageView setNeedsDisplay];
最佳答案
为了确定标签的大小,您需要查看NSString size方法。其中有许多可以告诉您字符串的大小,字体和各种限制。
例如,[@"string" sizeWithFont: forWidth: lineBreakMode:];
将返回一个CGSize
,您可以使用它来适当地调整标签大小。
顺便说一句,我发现UILabel不能很好地处理多行字符串。您最好编写自己的UIView子视图,该子视图可以处理多行文本,每行都有自己的标签。
关于iphone - sizeToFit运行异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8556880/