2014-01-20 4 views
0

я имел приложение IPhone, в котором я хочу, чтобы преобразовать мой взгляд на изображение, чтобы его двойном размере, не меняя положения зрения изображения. (Т.е. центр не должен быть изменен) я делаю как этотИзменение положения изображения при применении преобразования?

CGAffineTransform firstTransform = bg.transform; 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration: 0.5]; 
bg.transform = CGAffineTransformScale(bg.transform,2,2); 
[UIView setAnimationDelegate:self]; 
[UIView commitAnimations]; 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration: 0.5]; 
bg.transform = firstTransform; 
[UIView setAnimationDelegate:self]; 

[UIView commitAnimations]; 

Но при преобразовании его позиции меняются. Теперь я делаю это так, чтобы не изменять положение изображения. Мне нужно, чтобы изображение было преобразовано в двойной размер при щелчке с анимацией, подобной этому

animation on the red button when clicking next

может кто угодно g укусите меня на этом?

+0

использовать вложенные анимации с использованием [UIView animateWithduration: завершение] blocks.After одна анимация завершается, блок завершения является executed.Add следующей анимации там. – santhu

ответ

0

Убедитесь, что узловая точка находится в центре, имея в виду при установке точки привязки значение должно быть между 0 и 1: 0 является левая/верхняя сторона и 1 является правой/нижней стороне. Таким образом, чтобы установить точку привязки к центру, установите его на 0.5 как на X и оси Y:

[itemName.layer setAnchorPoint:CGPointMake(0.5, 0.5)]; 

Тогда при масштабировании объекта, он должен масштабироваться вверх от вокруг центральной точки.

Я также предлагаю использовать animateWithDuration:completion. Код станет намного проще:

[UIView animateWithDuration:1.0f animations:^{ 
    [bg setTransform:CGAffineTransformScale(bg.transform, 2.0, 2.0)]; 
} completion ^{ 
    [UIView animateWithDuration:1.0f animations:^{ 
     [bg setTransform:CGAffineTransformScale(bg.transform, 0.5, 0.5)]; 
    ]; 
}]; 

Надеюсь, это поможет вам достичь желаемого эффекта!

+0

В своем вопросе: «(то есть центр не должен быть изменен)» - также, связь свидетельствовала круг, поэтому я предположил, центр будет узловая точка –

0

Убедитесь, что вы не используете автоматическую компоновку. Чтобы отключить это, откройте свой xib, щелкните по первой вкладке на правой панели, снимите флажок Использовать автоматическую компоновку в документе Interface Builder. Съемка экрана прилагается для получения справки.

Auto Layout under Interface Builder Document

Смежные вопросы