Objective c 更改UIView图幅时移动图元

Objective c 更改UIView图幅时移动图元,objective-c,ios6,autolayout,Objective C,Ios6,Autolayout,我几乎没有UITextView的。每一个TextView都会在焦点上改变其大小-它会以如下动画的形式增长约50像素: [UITextView animateWithDuration:.1f animations:^{ CGRect new_frame = textView.frame; new_frame.size.height += height; textView.frame = new_frame; }]; 现在我的问题是,我需要将文本视图向下移动50像素(显然也

我几乎没有UITextView的。每一个TextView都会在焦点上改变其大小-它会以如下动画的形式增长约50像素:

[UITextView animateWithDuration:.1f animations:^{
    CGRect new_frame = textView.frame;
    new_frame.size.height += height;
    textView.frame = new_frame;
}];
现在我的问题是,我需要将文本视图向下移动50像素(显然也包括动画)。我想知道如何用最简单的方法做到这一点。我的应用程序只有iOS6,所以我可以使用自动布局。我试过了,但失败了。我尝试使用支柱和弹簧,但也失败了

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

编辑

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

以下是单击第一个文本视图后在模拟器中的外观:


因此,您可以看到它覆盖了下一个视图,并且不保留约束。

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

这里有一个很好的autolayout教程,如果您以前没有使用过autolayout,那么它应该可以帮助您解释其中的一些概念


在我看来,苹果公司为这个问题提供了一个表视图解决方案


您可以在表格视图中增加一行的高度,并自动向下推下列行。这也是非常直接的动画这一点

不要将框架与自动布局相结合,那样会产生不可预知的结果

删除从第二个
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];
    }];
}

autolayout肯定会完成您希望完成的任务。我没有研究过任何实现,但通过观看视频,我知道这是您想要的。谢谢-我使用autolayout尝试的是在以下两个元素之间添加垂直约束。这没用,我添加了一行:“[self.view settranslates自动调整大小gmaskintoconstraints:YES];”我唯一看到的是在调试器中,我得到了一个约束列表,建议删除一个约束,因为它们相互冲突。我会继续尝试,你可以拍摄一张界面生成器的屏幕截图,显示第二个文本视图的约束吗?看起来第二个文本视图仍然对superview有约束,你应该能够将该约束升级为用户约束并删除它。那件事过去了,你该走了。