Ios 关于UIScrollView子视图上的动画
当我在scrollview的子视图上添加一些动画,比如扩展或收缩文本字段时,它就是不起作用。但是当子视图添加到简单的UIView时,它工作得很好Ios 关于UIScrollView子视图上的动画,ios,animation,user-interface,Ios,Animation,User Interface,当我在scrollview的子视图上添加一些动画,比如扩展或收缩文本字段时,它就是不起作用。但是当子视图添加到简单的UIView时,它工作得很好 这是怎么发生的?在UIScrollView中设置UITextField的帧的动画应该没有问题 在iOS 6及更高版本中,“我的动画不是动画”最常见的来源是尝试在使用自动布局时通过调整帧来设置控件动画(因为帧的调整可能会因最无害的操作重新应用的约束而受阻)。通过在Interface Builder中选择最右侧面板的“文件检查器”(第一个选项卡),并查看是
这是怎么发生的?在
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];
}];
如果您认为您正在使用与您选择的自动布局或非自动布局相对应的适当动画技术,但仍然不起作用,那么您应该向我们展示一些代码,并更详细地描述情况