Objective-c 隐藏视图动画

Posted

技术标签:

【中文标题】Objective-c 隐藏视图动画【英文标题】:Objective-c Hidden View animation 【发布时间】:2011-04-25 10:51:22 【问题描述】:

您好,我的视图中有一个隐藏视图,通过单击按钮会出现。但是当你点击按钮时,我希望视图做一个向上滑动的动画,这样它就不会只是出现,而是向上滑动到它的位置。

这是我的隐藏视图的代码: 在 .h 中:

@interface hidden_viewsViewController : UIViewController 

    IBOutlet UIView *loginview;



@property (nonatomic, retain) IBOutlet UIView *loginview;

- (IBAction)login;
- (IBAction)logout;

在.m中

@synthesize loginview;

- (IBAction)login 

    loginview.hidden = NO;



- (IBAction)logout 

    loginview.hidden = YES;



- (void)viewDidLoad 
    [super viewDidLoad];

    loginview.hidden = YES;

【问题讨论】:

Open view with slide effect from bottom to top on iPhone的可能重复 是的,我也为重复 +1,您的链接完全回答了这个问题 【参考方案1】:

尝试,假设视图是纵向的:

- (IBAction)login 
    [self.view bringSubviewToFront:loginView];
    loginview.frame = CGRectMake(0, 480, 320, 480); 
    loginview.hidden = NO;
    [UIView animateWithDuration:1.0 
                     animations:^
                         loginview.frame = CGRectMake(0, 0, 320, 480);
                     ];

【讨论】:

问题在于它“在”第一个视图“下方”,因此第一个视图中的所有按钮等仍显示在动画视图中。我该如何解决? 通过调用[self.view bringSubviewToFront:loginView];,也将其添加到解决方案中。【参考方案2】:

您应该更改视图的 frame 属性,并且应该在动画块中进行,如下所示:

-(IBAction)login

    [UIView beginAnimations:@"showView" context:nil];
    [UIView setAnimationDuration:0.5];
    CGRect viewNewFrame = self.view.frame;
    viewNewFrame.origin.y = 0;
    self.view.frame = viewNewFrame;
    [UIView commitAnimations];
 

希望对你有帮助!

【讨论】:

以上是关于Objective-c 隐藏视图动画的主要内容,如果未能解决你的问题,请参考以下文章

Objective-C - CABasicAnimation 在动画后应用更改?

如何使用objective-C在ios 9中隐藏特定视图控制器的状态栏

在 CollectionView -Objective-C 中显示/隐藏单元格

动画结束时如何隐藏视图?

UIStackView,通过调整动画大小隐藏子视图

iOS 用从左到右的动画取消隐藏视图