Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS-导航栏内的动画不';行不通_Ios_Objective C_Animation_Uinavigationbar_Quartz Core - Fatal编程技术网

iOS-导航栏内的动画不';行不通

iOS-导航栏内的动画不';行不通,ios,objective-c,animation,uinavigationbar,quartz-core,Ios,Objective C,Animation,Uinavigationbar,Quartz Core,我有一个场景,我需要在导航栏中添加动画,但是模拟器没有动画。我添加了一个UIView,添加了一个标签/文本字段,为约束创建了出口,并使用“UIView animateWithDuration”更新它们,相反,模拟器只是更新约束并相应地显示视图,但没有任何动画。我尝试过修改约束和框架(分别) 当我在viewDidLoad:中将宽度约束增加“60”时,会显示这一点。结果是非动画的 当我通过点击按钮来配置约束(增加宽度“60”)时,即使是静态更新也不会发生 不过,同样的代码在UIView内的导航栏

我有一个场景,我需要在导航栏中添加动画,但是模拟器没有动画。我添加了一个UIView,添加了一个标签/文本字段,为约束创建了出口,并使用“UIView animateWithDuration”更新它们,相反,模拟器只是更新约束并相应地显示视图,但没有任何动画。我尝试过修改约束和框架(分别)

当我在viewDidLoad:中将宽度约束增加“60”时,会显示这一点。结果是非动画的

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

不过,同样的代码在UIView内的导航栏外也能完美地工作


感谢您的帮助。

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

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

    self.navigationController.navigationBarHidden=YES

  • 之后,使用
    ui视图
    创建一个自定义导航栏,将框架调整为可见和顶部


  • 之后,在视图中添加组件并开始使用动画。

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

    我所做的是

  • 添加了一个视图来代替barButtonItem(让我们称之为“超级视图”),并在其上添加了另一个视图(让我们称之为“子视图”),以便获得以下配置
  • 在子视图和它上面的对象之间设置了约束。现在,我为superView和subView创建了插座(superView和subView),使它们透明(当然是可选的)

    有用说明:将superView的宽度设置为默认栏按钮项的宽度,将子视图的宽度设置为屏幕宽度。在superView上禁用“剪辑子视图”,但在子视图上启用

  • 根据需要在我想要的地方添加动画,但布局需要在“superView”上,而不是父视图上

    [self.superView layoutIfNeeded];
    

  • 祝您好运。

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

    为什么不尝试使用自定义导航栏?是否尝试添加在导航栏上创建uiview并在该视图中制作动画?@T_77是的,我就是这么做的。对不起,我忘了提那件事。我在导航栏中添加了UIView,并在其顶部添加了标签。而且这不是因为我的代码太乱。我在一个新项目中尝试了它,结果是一样的:(@manish_kumar hmm…。我会尝试。但是,为什么你认为自定义导航会解决这个问题呢?自定义导航栏我指的是用作导航栏的
    UIView
    。通过它,你可以轻松工作并添加任何你想要的功能。
    [self.superView layoutIfNeeded];