Как я могу анимировать коробку, чтобы расширяться и сжиматься при касании?
Я прочитал вступление к основной анимации от 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.