iOs Autolayout:调整嵌套视图的大小以适应内容

时间:2014-01-22 20:24:51

标签: ios autolayout

我正在构建具有内置消息应用或最新应用的UI的应用。 Part of my UI

我使用storyboard来创建布局。对于UI的这一部分,我有以下约束:

  • 外观:
    • 在前面,顶部,右侧,底部进行超视图
    • 高度
  • 的UITextView
    • to outerview:front,top,right,bottom
    • 高度

现在我想添加完全相同的行为,例如标准消息应用程序(外部视图长大,uitextview调整大小以适应内容)。

我已经实施了

- (void)textViewDidChange:(UITextView *)textView{
    if (textView == self.messageTextView) {

        CGSize sizeThatShouldFitTheContent = [self.messageTextView sizeThatFits:CGSizeMake(self.messageTextView.frame.size.width, 150)];

        if (sizeThatShouldFitTheContent.height <= 30) {
            sizeThatShouldFitTheContent.height = 30;
        }

        [self.view layoutIfNeeded];
        [UIView animateWithDuration:0.3 animations:^{
            self.messagePanelConstraint.constant = sizeThatShouldFitTheContent.height + 14;
            self.messageTextConstraint.constant = ceilf(sizeThatShouldFitTheContent.height);
            [self.view layoutIfNeeded];
        }];
        [self setSendButtonState];
    }
}

但是在那种情况下,我有“跳跃”uitextview,有时会有额外的空间,有时候不会。另外你可以看到有“魔法数字”(30是我最初的uitextview高度)和14 - 是uitextview和外部视图之间的空间。

那么有什么方法可以通过自动布局更轻松地实现这一结果吗?

0 个答案:

没有答案