Ios 关于UIScrollView子视图上的动画

Ios 关于UIScrollView子视图上的动画,ios,animation,user-interface,Ios,Animation,User Interface,当我在scrollview的子视图上添加一些动画,比如扩展或收缩文本字段时,它就是不起作用。但是当子视图添加到简单的UIView时,它工作得很好 这是怎么发生的?在UIScrollView中设置UITextField的帧的动画应该没有问题 在iOS 6及更高版本中,“我的动画不是动画”最常见的来源是尝试在使用自动布局时通过调整帧来设置控件动画(因为帧的调整可能会因最无害的操作重新应用的约束而受阻)。通过在Interface Builder中选择最右侧面板的“文件检查器”(第一个选项卡),并查看是

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


这是怎么发生的?

UIScrollView
中设置
UITextField
帧的动画应该没有问题

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

例如,要在不使用autolayout时设置
的动画,假设您的
UITextField
有一个名为
textField
IBOutlet
,您可以执行以下操作:

[UIView animateWithDuration:0.5 animations:^{
    CGRect frame = self.textField.frame;
    frame.size.width = 280;
    self.textField.frame = frame;
}];
self.textFieldWidthConstraint.constant = 280;
[UIView animateWithDuration:0.5 animations:^{
    [self.view layoutIfNeeded];
}];
但是,使用autolayout时,不是通过调整
,而是通过更改约束的
常量
值来实现等效效果。例如,假设您为
UITextField
上名为
textFieldWidthConstraint
IBOutlet
宽度约束创建了一个
IBOutlet
,则您可以使用如下方式设置宽度更改的动画:

[UIView animateWithDuration:0.5 animations:^{
    CGRect frame = self.textField.frame;
    frame.size.width = 280;
    self.textField.frame = frame;
}];
self.textFieldWidthConstraint.constant = 280;
[UIView animateWithDuration:0.5 animations:^{
    [self.view layoutIfNeeded];
}];
如果您认为您正在使用与您选择的自动布局或非自动布局相对应的适当动画技术,但仍然不起作用,那么您应该向我们展示一些代码,并更详细地描述情况