аффинный перевод предотвращает перемещение CGPoint - PullRequest
1 голос
/ 02 апреля 2012

Я расширил и переместил метку (manualLabel), затем вернул ее к исходному размеру, но оставил ее в новой позиции.

 [UIView animateWithDuration:0.5   
                  animations:^{
                      CGAffineTransform scale = CGAffineTransformMakeScale(2.0, 2.0);
                      CGAffineTransform translate = CGAffineTransformMakeTranslation(0.0, -70.0); // up 70
                      self.instructionsLabel.transform = CGAffineTransformConcat(scale,translate);
                  }
                  completion:^(BOOL finished) {
                      [UIView animateWithDuration:0.25
                                       animations:^{
                                           CGAffineTransform scale = CGAffineTransformMakeScale(1.0,1.0);
                                           CGAffineTransform translate = CGAffineTransformMakeTranslation(0,-70.0); //left in place up 70
                                           self.instructionsLabel.transform = CGAffineTransformConcat(scale, translate);
                                       }
                                       completion:^(BOOL finished) {}
                      ];

Позже я явно использую CGPointMake, чтобы вернуть метку на исходное место, но она остается в переведенном положении (70 пунктов вверх от исходного места).

instructionsLabel.frame = CGRectMake(384, 601, 655, 40);
//Adding this doesn't make any difference, in or out.

instructionsLabel.center=CGPointMake(384, 601);

Я подтвердил Breaks и NSLog, что операторы CGPointMake и CGRectMake достигнуты ... они просто не работают после этого аффинного преобразования.Кто-нибудь знает почему?(Я не хочу перемещать метку обратно сразу после процедуры перевода, но мне может потребоваться, если я не могу понять, почему процедура CGPointMake этого не делает.)

Спасибо за любые предложения,* 1009 Роб *

1 Ответ

1 голос
/ 25 апреля 2012

Если я не ошибаюсь, одна из основных причин использования аффинного преобразования для масштабирования, перемещения и т. Д. Состоит в том, что позднее вы можете установить преобразование в CGAffineTransformIdentity, что отменит любые примененные вами преобразования. Я полагаю, что ваша проблема здесь в том, что вы устанавливаете центр на то положение, которое когда-либо было до того, как вы применили translate transform. Представление действительно перемещается в эту точку + любое преобразование применяется к этому представлению. Так что просто установите идентичность преобразования.

...