1

这应该很容易,但由于某种原因,它对我不起作用。我想调整我的文本框的大小,理想情况下在底部有一些填充。现在,我将满足于适当调整大小。

设置

我的故事板上的单一视图

界面

@property (weak, nonatomic) IBOutlet UITextView *messageTextBox;

执行

- (void)viewDidLoad
{
    [super viewDidLoad];
    _messageTextBox.text = _message.body;
    [_messageTextBox sizeToFit];  
}

我尝试了几种不同的解决方案,包括在这里更改框架的高度和其他用户建议...

这是使用 ios7 和 xcode 5,但我不明白为什么这样的基本功能会出现问题。

为了增加我的困惑,我在 sizeToFit 之后记录了框架高度和内容大小。我的结果是:

2013-10-02 18:40:20.803 narg[21467:a0b] H of the frame: 618.000000
2013-10-02 18:40:20.804 narg[21467:a0b] W of the frame: 469.000000
2013-10-02 18:40:20.804 narg[21467:a0b] Reported H of contentSize property on object 42.000000

所以框架清楚地知道正确的高度,但是在显示器上所有的文本都被截断了,盒子没有调整大小。

4

2 回答 2

4

这是我的问题的答案。在某些时候,我已经在我的视图中检查了 Autolayout。这有效地锁定了视图并且不允许我调整帧大小。

如果您看到框架未调整大小的类似问题,请尝试以下操作:

  • 转到界面生成器并打开视图
  • 单击文件检查器
  • 取消选择自动布局。

这解决了我的问题。

于 2013-10-03T00:09:28.270 回答
0

看看这里根据你的文本计算 UITextView 的好框架_message.body。您可以添加一个间隙以具有这样的底部填充:

- (CGFloat)textViewHeightForAttributedText:(NSAttributedString*)text andWidth:(CGFloat)width
{
    UITextView *calculationView = [[UITextView alloc] init];
    [calculationView setAttributedText:text];
    CGSize size = [calculationView sizeThatFits:CGSizeMake(width, FLT_MAX)];
    return size.height + 50; // 5O is your gap for example
}
于 2013-10-02T22:37:47.277 回答