2

我的 UITextView 很少。每个 TextView 都会在焦点上改变它的大小 - 它会增长大约 50 像素,动画如下所示:

[UITextView animateWithDuration:.1f animations:^{
    CGRect new_frame = textView.frame;
    new_frame.size.height += height;
    textView.frame = new_frame;
}];

现在我的问题是我需要将 TextViews 向下移动 50px(显然也带有动画)。我想知道如何以最简单的方式做到这一点。我的应用程序只有 iOS6,所以我可以使用自动布局。我尝试过,但失败了。我尝试使用支柱和弹簧 - 也失败了。

想到的唯一解决方案是使用动画将每个元素向下移动 50 像素。但这对我来说听起来很便宜。任何想法如何做到这一点?自动布局可以吗?

编辑

以下是我一直在尝试的布局:

垂直布局

在此处输入图像描述

这是单击第一个 TextView 后在模拟器中的外观:

在此处输入图像描述

所以你可以看到它宁愿覆盖下一个视图并且不保留约束。

4

3 回答 3

5

不要将帧与自动布局结合起来,这会给你带来不可预知的结果。

删除从第二个顶部到其父视图顶部的约束UITextView

然后为 的高度约束创建一个出口UITextView

使用以下代码调整高度UITextView

- (void)textViewDidBeginEditing:(UITextView *)textView
{
    [UITextView animateWithDuration:.1f animations:^{
        self.textViewHeightConstraint.constant +=50;
        [self.view layoutIfNeeded];
    }];
}

-(void)textViewDidEndEditing:(UITextView *)textView
{
    [UITextView animateWithDuration:.1f animations:^{
        self.textViewHeightConstraint.constant -=50;
        [self.view layoutIfNeeded];
    }];
}
于 2013-04-16T12:54:57.093 回答
1

这应该很容易通过自动布局实现,您需要在每个文本视图上设置一个垂直空间约束,告诉它在其上方的文本视图之间留下 x 像素。

这是一个很好的自动布局教程,它应该有助于解释一些概念,如果你在它有点棘手之前没有使用过自动布局。

在 iOS 6 中开始自动布局

于 2013-04-15T21:46:05.930 回答
1

在我看来,这听起来像是 Apple 提供了一个带有表格视图的解决方案的问题。

您可以在表格视图中增加一行的高度,随后的行将自动下推。对此进行动画处理也很简单。

于 2013-04-15T21:46:37.167 回答