0

我阅读了 Apple 的核心动画介绍,到处搜索“ios tweening”、“ios easing”和相关的内容,但令人惊讶的是空手而归。

如何制作我的 UILabel 合同并隐藏其子视图按钮,同时保持 UILabel 显示?链接、代码、设计概述或任何可以完成此操作的东西都将非常有帮助。

4

1 回答 1

0

惊讶没有人走到这一步,答案很简单。但也许这就是原因。

我不确定是否要为 UILabel 本身设置动画,但由于它是 UIView 的子类,我怀疑它会相当正常。

完成此操作的最简单方法是使用 UIView 静态方法:

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

就我而言,我有一个 UILabel,位于带有 UIButtonmyLabel的 UIView 之上。假设我想在单击时卷起,我会将我的按钮拖动到正确的位置并在方法中写入:myContainerdismissButtondismissButtonmyContainerdismissButtonviewController.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

它允许在视图完成动画后完成一个完成块。来自 Paul Hegarty 的 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 动画介绍中受益。

于 2013-06-11T01:46:44.833 回答