Как я могу анимировать коробку, чтобы расширяться и сжиматься при касании?

Я прочитал вступление к основной анимации от Apple, искал повсюду "ios tweening", "ios relaxing" и связанные с этим вещи, но неожиданно пришел с пустыми руками.

Как я могу заключить свой контракт с UILabel и скрыть кнопки его подпредставления, сохраняя при этом показ UILabel? Ссылки, код, обзор дизайна или все, что можно сделать, будет чрезвычайно полезным.

1 ответ

Решение

Удивлен, никто не подошел к этому, ответ довольно прост. Но, может быть, поэтому.

Я не уверен насчет анимации самой UILabel, хотя, поскольку это подкласс UIView, я подозреваю, что это было бы вполне нормально.

Самый простой способ сделать это - использовать статический метод UIView:

+ (void)animateWithDuration:(NSTimeInterval)duration 
                 animations:(void (^)(void))animations

В моем случае у меня есть UILabel, myLabel на вершине UIView myContainer с UIB-кнопкой dismissButton, Предполагая, что я хочу dismissButton, при нажатии, чтобы свернуть myContainer Я бы Crtl-перетащить мой dismissButton кнопка к правильному viewController.m и в -(IBAction) метод записи:

-(IBAction)dismissButtonPressed:(id)sender
{
   [UIView animateWithDuration:1.0
                    animations:^{ 
           [self.myContainer.frame = CGRectMake(0,0,frame.bounds.size.width,20)];
           [self.dismissButton removeFromSuperView]; }];
}

Примечание: это из моей ограниченной памяти, поэтому укажите на любые ошибки.

Примечание 2: Если вы используете это, чтобы помочь себе, посмотрите эти точки с запятой, скобки и фигурные скобки

Теперь большинству людей, читающих это для справки, может потребоваться больше функциональных возможностей, чем нажатие кнопки, которая сворачивает представление навсегда. Есть более подробные методы animateWith*.

Есть

+(void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion

что позволяет завершить блок завершения после завершения анимации вида. Примечание от класса iOS Пола Хегарти: Вы можете вызывать более одушевленные методы из своего блока завершения.

Существует еще один метод анимации, который позволяет нам указать параметры анимации.

+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion

Варианты включают в себя:

enum {
   UIViewAnimationOptionLayoutSubviews            = 1 <<  0,
   UIViewAnimationOptionAllowUserInteraction      = 1 <<  1,
   UIViewAnimationOptionBeginFromCurrentState     = 1 <<  2,
   UIViewAnimationOptionRepeat                    = 1 <<  3,
   UIViewAnimationOptionAutoreverse               = 1 <<  4,
   UIViewAnimationOptionOverrideInheritedDuration = 1 <<  5,
   UIViewAnimationOptionOverrideInheritedCurve    = 1 <<  6,
   UIViewAnimationOptionAllowAnimatedContent      = 1 <<  7,
   UIViewAnimationOptionShowHideTransitionViews   = 1 <<  8,

   UIViewAnimationOptionCurveEaseInOut            = 0 << 16,
   UIViewAnimationOptionCurveEaseIn               = 1 << 16,
   UIViewAnimationOptionCurveEaseOut              = 2 << 16,
   UIViewAnimationOptionCurveLinear               = 3 << 16,

   UIViewAnimationOptionTransitionNone            = 0 << 20,
   UIViewAnimationOptionTransitionFlipFromLeft    = 1 << 20,
   UIViewAnimationOptionTransitionFlipFromRight   = 2 << 20,
   UIViewAnimationOptionTransitionCurlUp          = 3 << 20,
   UIViewAnimationOptionTransitionCurlDown        = 4 << 20,
   UIViewAnimationOptionTransitionCrossDissolve   = 5 << 20,
   UIViewAnimationOptionTransitionFlipFromTop     = 6 << 20,
   UIViewAnimationOptionTransitionFlipFromBottom  = 7 << 20,
};
typedef NSUInteger UIViewAnimationOptions;

Надеюсь, кто-то может извлечь выгоду из этого длинного вступления к анимации UIView.

Другие вопросы по тегам