努力让我的应用程序同时在 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 时,所有按钮都在较小的 iPhone 上被挤压,并且因为我使用的是由 iPhone 5 尺寸设置的点,所以它们最终会降低,将底行从屏幕上移开。我最初从 Interface Builder 获得了不同的 CGPoint 数字,但它们是“错误的”,尽管我认为它们是“错误的”,因为它们是 Autolayout 使用的数字。该数组只是为了让您可以看到:
buttonLocations = [NSArray arrayWithObjects:
[NSValue valueWithCGPoint:CGPointMake(57, 523)],
[NSValue valueWithCGPoint:CGPointMake(109, 523)],
[NSValue valueWithCGPoint:CGPointMake(57, 471)],
[NSValue valueWithCGPoint:CGPointMake(109, 471)],
nil];
我应该怎么做才能解决这个问题?为每个尺寸的设备设置不同的点似乎不是很有效。