具有自动布局挑战的核心动画(尺寸更改)

时间:2016-05-28 14:05:32

标签: ios swift animation autolayout

我使用2种方法制作了一块核心动画,以便让对象的大小从现有位置的中心向外扩展......

(1)viewDidLayoutSubviews()

  

self.imageView.frame = CGRectMake(187,249,0,0)

位于此imageView对象的屏幕中央

(2)viewDidAppear()   - 持续时间为1秒的动画块。 e.g。

UIView.animateWithDuration(1.0, delay: 1.5, options: [], animations: {

        self.imageView.frame = CGRectMake(16, 70, 343, 358)

        }, completion: nil)

将对象放在我想要的全尺寸显示的特定屏幕尺寸。

当我在iPhone尺寸上使用 x和y坐标进行CGRectMake (...)时,我正在寻找它们可以正常工作,但是当我尝试使用不同屏幕尺寸的模拟器时,它不与Autolayout约束一起使用,但会覆盖现有的约束。

问题(S)...

有没有办法让这个动画以某种方式与屏幕尺寸成正比,而不是显式的坐标和尺寸?通过CGRectMake ......? (...似乎显示使用Autolayout和动画之间的冲突)

理想情况下,我正在寻找一个优雅的简单解决方案?还是我处于技术极限?

非常感谢提前!

1 个答案:

答案 0 :(得分:0)

您可以使用自动布局约束设置imageView位置&给它一个尺寸约束,并从它的出口你可以动画高度增加,使所有其他约束工作

  

@IBOutlet var myViewHeight:NSLayoutConstraint!

     

UIView.animateWithDuration(0.3,延迟:0.0,选项:[],动画:   {       () - >无效

        self.myViewHeight.constant = 300

        self.view.layoutIfNeeded()
        }, completion:nil)

您应该从约束本身获取出口,例如控制+拖动Label.top = topMargin

You should take the outlet from the constraint itself