UIAnimation вызывает исчезновение кнопки titleLabel во время анимации

Я делаю эту простую анимацию, которая заставляет кнопку уменьшаться до ширины 0:

[UIView animateWithDuration:0.2
                 delay: 0.0
                 options: UIViewAnimationOptionCurveEaseIn
                 animations:^{
                     [btnActionButton setFrame:CGRectMake(160, 10, 0, 55)];
                 }
                 completion:^(BOOL finished){
                 }];

Теперь проблема в том, что как только начинается анимация, titleLabel кнопки автоматически скрывается... Я убедился в этом, используя режим slowAnimation симулятора.

Возможно ли, что метка также сжимается вместе с рамкой во время анимации, потому что это выглядит довольно неловко, если название кнопки исчезает в начале.

Заранее спасибо. Обейд


person Obaid Maroof    schedule 11.07.2012    source источник
comment
Да, он также будет уменьшаться, потому что он включен в кнопку, с помощью которой вы меняете рамку,   -  person Bazinga    schedule 11.07.2012


Ответы (3)


Это связано с шириной 0.

Используйте приведенный ниже код.

[UIView animateWithDuration:0.2
             delay: 0.0
             options: UIViewAnimationOptionCurveEaseIn
             animations:^{
                 [btnActionButton setFrame:CGRectMake(160, 10, 50, 55)];
             }
             completion:^(BOOL finished){
             }];

вместо 50 укажите желаемую ширину кнопки после анимации.

person sschunara    schedule 11.07.2012
comment
ваш код будет держать кнопку шириной 50 пикселей... вместо того, чтобы позволить ей исчезнуть... - person Obaid Maroof; 24.08.2012

          [UIView animateWithDuration:0.2
                      delay: 0.0
                    options: UIViewAnimationOptionCurveEaseIn
                 animations:^{
                     [btnActionButton.titleLabel setCenter:CGPointMake(-64, btnActionButton.titleLabel.center.y)];
                     [btnDeleteButton setFrame:CGRectMake(160, 10, 128, 55)];
                 }
                 completion:^(BOOL finished){
                     [btnActionButton setFrame:CGRectMake(160, 10, 0, 55)];
                     [btnActionButton.titleLabel setCenter:CGPointMake(0, btnActionButton.titleLabel.center.y)];
                 }];

Вот как мне удалось заставить это работать ... На самом деле, я хотел, чтобы первая кнопка исчезла, а вторая кнопка появлялась скользящим образом.

person Obaid Maroof    schedule 11.07.2012
comment
так это решение вашей проблемы? - person The iOSDev; 11.07.2012

Попробуйте также анимировать этикетку. Я имею в виду вот так:

[UIView animateWithDuration:0.2
             delay: 0.0
             options: UIViewAnimationOptionCurveEaseIn
             animations:^{
                 [btnActionButton setFrame:CGRectMake(160, 10, 0, 55)];
                 [btnActionButton.titleLabel setFrame:CGRectMake(  0,  0, 0, 55)];
             }
             completion:^(BOOL finished){
             }];

Надеюсь это поможет.

Ваше здоровье!

person George    schedule 11.07.2012
comment
Это тоже не работает .... кажется очень глупым, поскольку это очень распространенная анимация, чтобы скрыть кнопку таким образом, когда я сжимаюсь в одну сторону .... :( - person Obaid Maroof; 24.08.2012