gpt4 book ai didi

ios - Autolayout 破坏了 UIView 动画

转载 作者:可可西里 更新时间:2023-11-01 03:38:16 26 4
gpt4 key购买 nike

努力让我的应用程序在 iPhone 5 和更小的 iPhone 上运行。很乐意要求 iOS6 并使用自动布局,因为效果很好。

但是,该应用程序有 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 时,所有按钮在较小的 iPhone 上都被揉成一团,并且因为我使用的是 iPhone 5 尺寸设置的点,所以它们最终会降低,使底部行离开屏幕。我最初从 Interface Builder 获得了不同的 CGPoint 编号,但它们是“错误的”,尽管我认为它们是“错误的”,因为它们是供自动布局使用的编号。数组只是为了让你看到:

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

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

最佳答案

解决方案是为项目的变换属性设置动画,而不是它的位置。

位置将由自动布局设置,您不想与之抗争。不过,屏幕上的实际位置将是其“正确”(由自动布局设置)位置,由其转换属性偏移。

所以你可以说 button.transform = CGTransformMake(x,y) 它会显示 x 和 y 偏离它的中心位置。

有多种 CGWhatever 宏可以轻松进行这些转换,您只需在动画 block 中更改它们即可移动项目。

关于ios - Autolayout 破坏了 UIView 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13883571/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com