我有一个场景,我需要在导航栏中添加动画,但模拟器没有动画效果。我添加一个UIView,添加一个标签/文本字段并为约束创建出口,并用" UIView animateWithDuration:"更新它们。相反,模拟器只是更新约束并相应地显示视图,但没有任何动画。我通过修改约束和框架(单独)来尝试它。
[self.view layoutIfNeeded];
[UIView animateWithDuration: 3
delay: 0.0
options: UIViewAnimationOptionCurveEaseInOut
animations: ^{
self.constraint.constant += 60;
NSLog(@"inside animation");
[self.view layoutIfNeeded];
}
completion:nil];
当我通过" 60"增加宽度约束时显示。在viewDidLoad :.它出现了非动画。
当我通过点击按钮配置约束(通过" 60"增加宽度)时,即使静态更新也不会发生。
相同的代码在UIView内的导航栏外完美运行。
感谢任何帮助...
答案 0 :(得分:0)
如果您的导航栏包含一些动画,那么您可以尝试绘制自定义导航栏。这就是你要做的事情:
在viewDidLoad()
方法的视图控制器中添加以下代码
self.navigationController.navigationBarHidden = YES;
之后使用UIView
创建一个自定义导航栏,其框架已调整为可见且顶部。
之后在视图上添加组件并开始使用动画。
答案 1 :(得分:0)
好的,我终于解决了这个问题。呼...
我做的是......
在子视图和它上面的对象之间设置了约束。现在,我为superView和subView创建了outlet(superView和subView),使它们透明(当然是可选的)。
有用的注意事项:将superView的宽度设置为默认的条形按钮项目的宽度,将subView的宽度设置为屏幕宽度。在superView上禁用“剪辑子视图”,但在子视图上启用。
根据需要在我想要的地方添加了动画,但在“superView”上添加了layoutIfNeeded,而不是父视图。
[self.superView layoutIfNeeded];
答案 2 :(得分:0)
你可以通过自定义UIView并创建宽度NSLayoutConstraint出口来实现它,在代码中你可以通过在调用动画代码之前调用UpdateConstraintsIfNeeded或UpdateViewConstraints方法来处理这个变量的常量属性