我有一段代码,每次发生后端数据库更改时都会执行。本质上,我在父视图中有一个标签。标签会通过许多状态消息之一进行更新,每条状态消息都在另一行中以新行(\ 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/

10-10 14:21