当前位置: 首页 > 知识库问答 >
问题:

UIView动画一个约束会影响另一个约束

柴翰藻
2023-03-14

我有一个UIImageView,我想在背景上用平移效果慢慢动画。我的背景图像视图有四个约束:

  • 从顶部到顶部布局指南的距离(零)

图像视图的视图模式设置为“纵横比填充”。当我运行我的应用程序时,没有问题,会显示静态图像。我添加以下代码来设置视图的动画:

-(void)animateBackgroundHorizontally:(BOOL)forward{
    self.backgroundImageViewLeftMargin.constant = forward ? -500 : 0;
    [self.backgroundImage setNeedsUpdateConstraints];
    [UIView animateWithDuration:30 animations:^{
        [self.backgroundImage layoutIfNeeded];
    } completion:^(BOOL finished) {
        [self animateBackgroundHorizontally:!forward];
    }];
}

然后我调用[self-AnimateBackground Horizontal:YES] 视图将显示:。发生的情况如下:

图像从一个意外(但始终相同)的位置开始设置动画(顶部边缘位于屏幕中部,应该位于屏幕顶部),正确设置动画到其最终位置,然后在设置动画回其原始位置时,它确实正确设置动画。我正在设置动画的唯一属性是左边距。当我不调用动画代码时,它会正确显示。为什么动画从图像上看到的错误位置开始?我试过设置self。背景图片。将AutoResilizingMaskintoConstraints(自动调整大小)转换为YES(是)(我得到了无法同时满足constaints错误)和NO(否),但它不起作用。这个问题在iOS 6和iOS 7上都存在。

共有1个答案

龚招
2023-03-14

我将动画开始代码放在了视图显示中,而不是视图显示中,问题消失了。安装。在iOS 6和iOS 7上都试过了,现在都很好用。

 类似资料:
  • 我设置了一个动画,以在打开另一个开关/标签时隐藏一个开关/标签。同时,刚刚打开的开关向上移动。这里的简单解释非常有效。 但是,当我在开关/标签关闭后尝试向下移动时,它不会移动。另一个开关会很好地重新出现,但不会触发顶部约束更改。 我对这种类型的设置和动画都是以编程方式进行的相对较新,在花了一个小时之后,我被难住了。是因为我正在制作相对于另一个顶部约束的动画吗?如果它第一次工作,这有什么关系?即使隐

  • 我有一个UIView,它通过几个约束被放置在屏幕上。一些约束由superview拥有,另一些约束由其他祖先拥有(例如,可能是UIViewController的view属性)。 要澄清这些解决方案的问题,请考虑以下视图层次结构: 爷爷 父亲 我 儿子 女儿 现在假设我们创建了以下约束,并始终将它们附加到它们最近的共同祖先: null

  • 我正在以编程方式创建UIView,之后我将使用约束从下到上设置该视图的动画。但动画不会显示在此视图对象上。

  • 问题内容: 假设我们有这些表: 是否有可能在上创建唯一约束,使得对于最多一个引用中的所有行,其值都为??陈述另一种方法,我可以创建一个唯一约束,以便上述表的连接没有重复项吗?我没有考虑- 我可以找到的每个数据库的语法似乎都与每个约束都限制在一个表上- 但这可能是我缺乏想象力的原因。(当然,去规范化以包含on是一种解决方案。) 问题答案: 您可以尝试以下方法。您必须在Parent中创建一个冗余的UN

  • 问题内容: 我在SQL Server 2008数据库中具有以下表: tblItem ,它具有一个 ItemID 字段; tblGoodItem ,它也有一个ItemID字段,并且有一个指向tblItem的外键; tblBadItem ,它也具有ItemID字段,并且还具有指向tblItem的外键。 一个项目不能同时是好项目和坏项目。它必须是一个或另一个。但是,无论该项目是好是坏,它都必须是一个项目

  • 我在viewcontroller的中央有一个UITextField(搜索字段),我正在使用UIView(liveView)创建一条细线。我以编程方式创建线视图及其约束。lineView本质上是一个下划线,当用户键入时,它在文本字段下的宽度会增加。用户按enter键后,我将调整约束,以便文本字段和视图移动到viewcontroller的顶部。我让它工作起来了,但随着线视图向上移动,它开始淡出并消失。