调整UITextView的大小 - 高度不调整

时间:2013-10-02 22:33:07

标签: ios objective-c ios7 sizetofit

这应该很容易,但由于某种原因,它不适合我。我想调整文本框的大小,理想情况下底部有一些填充。现在,我会安排妥善调整大小。

设置

我的故事板上的单个视图

接口

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

实施

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

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

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

为了增加我的困惑,我在sizeToFit之后记录了帧高和contentsize。我的结果是:

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

因此框架清楚地知道正确的高度,但在显示屏上所有文字都是截止的,并且框不会调整大小。

2 个答案:

答案 0 :(得分:4)

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

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

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

这解决了我的问题。

答案 1 :(得分:0)

根据您的文字_message.body,查看here来计算UITextView的优质框架。您可以添加间隙以获得如下所示的底部填充:

- (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
}