【问题标题】:iOS - Animations inside Navigation Bar doesn't workiOS - 导航栏内的动画不起作用
【发布时间】:2015-09-03 14:25:27
【问题描述】:

我有一个场景,我需要在导航栏中添加动画,但模拟器没有动画。我添加了一个 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];

当我在 viewDidLoad: 中将宽度约束增加“60”时显示。而且它是非动画的。

当我通过单击按钮配置约束(将宽度增加“60”)时,即使是静态更新也不会发生。

不过,相同的代码在 UIView 内的导航栏之外也能完美运行。

感谢任何帮助...

【问题讨论】:

  • 你为什么不试试自定义导航栏?
  • 您是否尝试过向导航栏添加 uiview 并在该视图中制作动画?
  • @T_77 是的,我就是这么做的。对不起,我忘了提。我在导航栏中添加了一个 UIView 并在其顶部添加了标签。另外,这不是因为我的代码混乱。我用一个新项目试了一下,结果是一样的:(
  • @manish_kumar 嗯.. 我会试试的。但是,您为什么认为自定义导航可以解决问题?
  • 自定义导航栏是指UIView,它将用作导航栏。通过这种方式,您可以轻松地工作并添加您想要的任何功能。

标签: ios objective-c animation uinavigationbar quartz-core


【解决方案1】:

如果您的导航栏包含一些动画,那么您可以尝试绘制自定义导航栏。这是你必须做的:

  1. viewDidLoad() 方法中的视图控制器中添加以下代码

    self.navigationController.navigationBarHidden = YES;

  2. 之后使用UIView 创建一个自定义导航栏,将框架调整为可见和顶部。

然后在视图上添加组件并开始使用动画。

【讨论】:

    【解决方案2】:

    您可以通过自定义 UIView 并为其创建宽度 NSLayoutConstraint 插座来实现这一点,在代码中您可以通过在调用动画代码之前调用 UpdateConstraintsIfNeeded 或 UpdateViewConstraints 方法来处理此变量的常量属性

    【讨论】:

      【解决方案3】:

      好的,我终于解决了这个问题。呼……

      我做的是……

      1. 添加了一个视图来代替 barButtonItem(我们称其为“superView”)并在其上添加另一个视图(我们称其为“subView”),以便获得以下配置。

      1. 在 subView 和它上面的对象之间设置了约束。现在,我为 superView 和 subView 创建了 outlet(superView 和 subView),使它们透明(当然是可选的)。

        有用的说明:将superView的宽度设置为默认的bar button item的宽度,将subView的宽度设置为屏幕宽度。在 superView 上禁用“剪辑子视图”,但在 subView 上启用。

      2. 根据需要在我想要的地方添加了动画,但 layoutIfNeeded 在“superView”上,而不是在父视图上。

        [self.superView layoutIfNeeded];
        

      祝你好运。

      【讨论】:

        猜你喜欢
        • 2020-08-09
        • 2021-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多