objective-c - 更改 UIView 框架时移动元素

标签 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;
}];

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

想到的唯一解决方案是将每个元素向下移动 50 px 并带有动画。但这对我来说听起来很便宜。任何想法如何去做?自动布局是否可行?

编辑

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

Vertical layout

enter image description here

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

enter image description here

因此正如您所见,它覆盖了下一个 View 并且不保留约束。

最佳答案

不要将框架与自动布局相结合,这会给您带来不可预知的结果。

移除第二个 UITextView 顶部到其父 View 顶部的约束。

然后为 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];
    }];
}

关于objective-c - 更改 UIView 框架时移动元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16025034/

相关文章:

ios - 使用 NSFetchedResultsController 创建表格部分

c++ - 使用 OpenCV 触摸和选择对象

ios - 如何使我的单例类可扩展?

ios - 如何在持久存储更改后刷新 fetchedResultsController

ios - 具有弱引用的 NSHashTable

ios - uinavigationController leftButton框架问题ios6和ios 7

swift - 添加多个 UI 元素并一起约束

iOS : Size classes issue

objective-c - 如何使用 block 异步下载图像?

ios - 自动布局问题