0

当我在滚动视图的子视图上添加一些动画时,例如扩展或收缩文本字段,它就不起作用了。但是当子视图添加到一个简单的 UIView 时效果很好。

这是怎么发生的?

4

1 回答 1

1

frame在aUITextField中设置 a 的动画应该没有问题UIScrollView

在 iOS 6 及更高版本中,“我的动画没有动画”的最常见来源是尝试通过调整frame使用自动布局时的控件来设置动画(因为调整frame可能会被最无害的重新应用的约束所阻碍)行动)。您可以通过在 Interface Builder 中选择最右侧面板的文件检查器(第一个选项卡)并查看是否选中了“使用自动布局”来判断您是否正在使用自动布局:

在此处输入图像描述

例如,要frame在不使用自动布局时为动画制作动画,假设您UITextField有一个IBOutlet被调用的textField,您可能会执行以下操作:

[UIView animateWithDuration:0.5 animations:^{
    CGRect frame = self.textField.frame;
    frame.size.width = 280;
    self.textField.frame = frame;
}];

但是使用自动布局时的等效不是通过调整 来实现的frame,而是通过更改约束的constant值来实现的。例如,假设您为您的 上调用的约束创建了一个,IBOutletwidth将使用以下内容为宽度的变化设置动画:textFieldWidthConstraintUITextField

self.textFieldWidthConstraint.constant = 280;
[UIView animateWithDuration:0.5 animations:^{
    [self.view layoutIfNeeded];
}];

如果您认为您正在使用与您选择的自动布局或非自动布局相对应的适当动画技术,但仍然无法正常工作,您应该向我们展示一些代码并更详细地描述情况。

于 2013-07-30T03:36:59.027 回答