Удивленный никто не ступил на это, ответ довольно прост. Но, возможно, именно поэтому.
Я не уверен в анимации самой UILabel, хотя, поскольку это подкласс UIView, я подозреваю, что это будет довольно нормально.
Самый простой способ получить это сделать, это использовать статический метод UIView:
+ (void)animateWithDuration:(NSTimeInterval)duration
animations:(void (^)(void))animations
В моем случае, у меня есть UILabel, myLabel
на вершине UIView myContainer
с UIButton 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 от Paul Hegarty: Вы можете вызвать дополнительные методы анимации из вашего блока завершения.
Существует еще один способ анимации, который позволяет нам указывать варианты анимации.
+ (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.
Можете ли вы просто взглянуть на этикетку, которая расширяет ее высоту кадра при касании этикетки? – Wain
Wain, это очень хитрый, и я, вероятно, сделаю это, пока не найду оптимальное решение. Но я не буду использовать эффектные эффекты анимации, показанные на http://stackoverflow.com/questions/5161465/how-to-create-custom-easing-function-with-core-animation – user
Конечно, вы можете использовать те, это просто другой способ анимации рамки ... – Wain