Итак, у меня есть объект UIView (называемый калибром) с правой стороны, который является вертикальной полосой. У меня есть еще одна метка слева от этой панели, которую я хочу отобразить на разных уровнях вертикальной панели (navLabel). Я хочу, чтобы этот ярлык выглядел так, будто он закреплен на некотором расстоянии (например, 10 пикселей) до моей вертикальной полосы. Мой ярлык оставлен в силе. Я делаю это в различных методах, где мне нужно обновить этикетку:анимация UILabel применительно к другому объекту UIView
CGSize labelSize = [navLabel.text sizeWithFont:[UIFont fontWithName:@"Arial" size:17.0]];
CGRect newFrame = CGRectMake(gauge.frame.origin.x - 10 - labelSize.width, FIRST_HEIGHT, navLabel.frame.size.width, navLabel.frame.size.height);
[UIView animateWithDuration:0.5 animations:^{
self.navLabel.frame = newFrame;
}];
В моих различных методах, я просто изменить на нужную высоту (т.е. #define FIRST_HEIGHT
).
Мой ярлык заканчивается в местах, которые я хочу, но анимация выглядит смешно. Например, если моя первая метка была @"label 1"
, а мой второй ярлык был @"my much much much longer label"
, что происходит, этикетка идет на правильную высоту, но поскольку метки имеют разные размеры, вы также видите x-анимацию, что делает ее забавной. Мне нужна анимация только в направлении y. Как я могу это сделать?
Я также испробовал право оправдано, но тогда мой ярлык не доходит до правильного расстояния до моего объекта калибровки. Это заканчивается тем, что пересекало его много раз, и я не уверен, почему это происходит.
Как я могу охарактеризовать только координату y или координату x? Создать кадр с измененным значением, а затем установить новый фрейм в моем блоке анимации UIView? Спасибо. – Crystal
есть, точно. Если разница между вашими кадрами составляет всего * один * от этих координат, то это все, что будет анимировано. Однако, просто устанавливая кадр перед или после анимации, чтобы обновленная координата x, поскольку ее происхождение также может сделать ее забавной, вам, вероятно, придется поиграть с поведением, чтобы получить то, что хорошо выглядит для вас. Или, как я предположил, вы могли бы анимировать одно «направление», а затем другое. См. Мой обновленный ответ для примера кода. – ddodev