• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

iPhone - 同时动画 2 个 subview

[复制链接]
菜鸟教程小白 发表于 2022-12-11 20:17:34 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有 2 个占据整个屏幕的 subview (状态栏除外)。我们称这个尺寸为“屏幕尺寸”。

我想同时动画:

  • 第一个从比屏幕尺寸大一点的屏幕尺寸缩放到屏幕尺寸,从 alpha 0 到 alpha 1。

  • 第二个从屏幕尺寸到比屏幕尺寸小一点,从alpha 1到alpha 0。

第二个 View 在开始时可见并在屏幕上。

这是我写的:

- (void) switchViews
{
    if (self.view2Controller == nil) {
        self.view2Controller = [[View2Controller alloc] initWithNibName"View2XIB" bundle:nil];
        self.view2Controller.view.hidden = YES;
        [self.view addSubview:self.view2Controller.view];
    }

    CGRect bigFrame = CGRectInset(self.view.frame, -50, -50);
    CGRect normalFrame = self.view.frame;
    CGRect smallFrame = CGRectInset(self.view.frame, 50, 50);

    self.view2Controller.view.frame = bigFrame;
    self.view2Controller.view.alpha = 0.0;

    [UIView beginAnimations"Anim1" context:nil];
    [UIView setAnimationDuration:5];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
    [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:self.view cache:YES];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelectorselector(animationDidStop:finished:context];

    self.view2Controller.view.hidden = NO;
    self.view2Controller.view.frame = normalFrame;
    self.view2Controller.view.alpha = 1.0;

    [UIView commitAnimations];

    // ------------------------------

    [UIView beginAnimations"Anim2" context:nil];
    [UIView setAnimationDuration:5];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
    [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:self.view cache:YES];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelectorselector(animationDidStop:finished:context];

    self.view1Controller.view.frame = smallFrame;
    self.view1Controller.view.alpha = 0.0;

    [UIView commitAnimations];
}

当然,我首先尝试将两种动画都放入一个独特的动画中。这不会改变任何事情,这就是我试图将它们分开的原因。

当启动时,view1 立即变为黑色,然后 view2 开始按预期设置动画。但我无法同时运行两个动画。

我该怎么做?



Best Answer-推荐答案


尝试查看基于 block 的动画。这是 iOS 4.0+ 推荐的方法。看看这里的答案:What are block-based animation methods in iPhone OS 4.0?

编辑 试试这样的

//You can do the same thing with a frame
CGPoint newCenter = CGPointMake(100, 100);
[UIView animateWithDuration:2.0
                 animations:^{ 
                     firstView.center = newCenter;
                     secondView.center = newCenter;
                     firstView.alpha = 0.2;
                 } 
                 completion:^(BOOL finished){
                     NSLog(@"All done animating");
                 }];

您放入动画中的任何内容:^{ } 将是您 View 的目标设置。上面我向您展示了如何更改位置以及 alpha。

关于iPhone - 同时动画 2 个 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7603948/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap