ios – Autolayout破坏了UIView动画

前端之家收集整理的这篇文章主要介绍了ios – Autolayout破坏了UIView动画前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
努力使我的应用程序在iPhone 5和较小的iPhone之前工作.很高兴要求iOS6并使用Autolayout因为它很好用.

但是,应用程序有4个按钮,可以定期交换位置,因此我为每个按钮分配一个与数组不同的位置,然后使用以下内容为动画设置动画:

[UIView animateWithDuration:0.5 animations:^{
    button1.center = [[locations objectAtIndex:0] CGPointValue];
    button2.center = [[locations objectAtIndex:1] CGPointValue];
    button3.center = [[locations objectAtIndex:2] CGPointValue];
    button4.center = [[locations objectAtIndex:3] CGPointValue];
}];

这不适用于Autolayout.没有什么变化.我得到的最好的是它会动画到一个位置,然后立即回弹.

当我删除Autolayout但是所有的按钮都在较小的iPhone上被碾碎,并且由于我使用的是iPhone 5尺寸设置的点,它们最终会降低,将底部行放在屏幕上.我原来有来自Interface Builder的不同的CGPoint数字,但它们是“错误的”,虽然我认为它们是“错误的”,因为它们是Autolayout使用的数字.数组就这样你可以看到:

buttonLocations = [NSArray arrayWithObjects:
        [NSValue valueWithCGPoint:CGPointMake(57,523)],[NSValue valueWithCGPoint:CGPointMake(109,[NSValue valueWithCGPoint:CGPointMake(57,471)],nil];

我该怎么做才能解决这个问题?为每个尺寸的设备设置不同的点似乎不是很有效.

解决方法

解决方案是您为items属性设置动画,而不是它的位置.

该位置将由autolayout设置,你不想打它.但是,屏幕上的实际位置将是其“正确”(由自动布局设置)位置,由其变换属性抵消.

所以你可以说button.transform = CGTransformMake(x,y),它将从它的中心位置出现x和y.

有很多CGWhatever宏可以轻松地进行这些变换,你可以在动画块中更改它们来移动项目.

原文链接:https://www.f2er.com/iOS/331058.html

猜你在找的iOS相关文章