【问题标题】:Animation does not work with autolayout (swift)动画不适用于自动布局(swift)
【发布时间】:2018-05-06 01:13:41
【问题描述】:

每当我尝试使用自动布局为已编程到屏幕上的对象设置动画时,都会出现很多问题。当我尝试为 UIImageView 设置动画时,它不会转换到下一个图像,而是复制对象。这是布局的代码:

    icon.topAnchor.constraint(equalTo: circle.bottomAnchor, constant: 10).isActive = true
    icon.centerXAnchor.constraint(equalTo: circleView.centerXAnchor).isActive = true
    icon.widthAnchor.constraint(equalToConstant: 40).isActive = true
    icon.heightAnchor.constraint(equalToConstant: 40).isActive = true 

这是动画的代码:

private func animateIcon(){
    UIView.transition(with: icon,
                      duration: 0.75,
                      options: .transitionCrossDissolve,
                      animations: { self.icon.image = UIImage(named: "CultureIcon") },
                      completion: nil)
}

当我使用它的框架将 UIImageView 添加到屏幕时,动画完全按照预期工作。

编辑:我想我找到了问题所在。我在 viewDidLayoutSubviews() 中调用该视图的设置函数。一旦我从那里删除功能,转换就起作用了。

但是,我也在使用@AmberK 提供的功能,这可能有助于解决问题!

【问题讨论】:

  • 你在哪里调用animateIcon函数?
  • @ivarun 我为 UIImageView 所在的视图创建了一个点击手势并从那里调用该函数。

标签: swift xcode animation uiimageview autolayout


【解决方案1】:

试试这个...

private func animateIcon(){
self.icon.image = UIImage(named: "CultureIcon")
UIView.transition(with: icon,
                  duration: 0.75,
                  options: .transitionCrossDissolve,
                  animations: { self.view.layoutIfNeeded() },
                  completion: nil)
}

编辑:更正了格式

【讨论】:

  • 不幸的是,它没有用。过渡有效,但视图内对象的重复仍然发生。
猜你喜欢
  • 1970-01-01
  • 2015-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-04
  • 2013-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多