Пытаюсь заставить мое приложение работать как на 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, они заканчиваются ниже, убирая нижний ряд с экрана. У меня изначально были другие числа CGPoint, которые я получил от Interface Builder, но они были «неправильными», хотя я думаю, что они были «неправильными», потому что это были числа для использования 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];
Что мне делать, чтобы решить эту проблему? Установка разных точек для каждого размера устройства не кажется очень эффективной.