如何从iPhone照片应用程序复制动画

时间:2010-01-18 17:02:28

标签: iphone statusbar photos

我正在构建一个具有图片查看功能的应用。我已经将UIScrollView野兽摔倒在地(希望发布我的滚动视图知识RSN),现在我正在尝试复制iPhone照片应用程序的其他一些视觉效果。特别是,在查看图像时,我想将控件和条形图分开。

我有一种方法可以切换状态栏,导航栏和标签栏的可见性,只留下带有图像的滚动视图。滚动视图是全屏。我有一个计时器,在用户执行某些操作后触发3秒钟(单击屏幕,查看下一个图像等),在timerFired方法中,我调用我的方法关闭条形图。单击一下屏幕即可打开栏杆。这是切换全屏状态的方法。

- (void)setFullScreen:(BOOL)fullScreen {
    // reset the timer
    [myTimer invalidate];
    [myTimer release];
    myTimer = nil;

    // start animation section
    [UIView beginAnimations:nil context:nil];
        // toggle the status bar    
        [[UIApplication sharedApplication] setStatusBarHidden:fullScreen animated:YES];
        [UIView setAnimationDuration:UINavigationControllerHideShowBarDuration];
        CGFloat alpha = fullScreen ? 0.0 : 1.0;
        // change the alpha to either 0 or 1 based on hiding or showing the bars
        self.navigationController.navigationBar.alpha = alpha;
        self.tabBarController.tabBar.alpha = alpha;

    // do the animations!
    [UIView commitAnimations];

    // restart the timer after we show the bars    
    if (!fullScreen) {
        myTimer = [[NSTimer timerWithTimeInterval:3.0 target:self selector:@selector(timerFired:) userInfo:nil repeats:NO] retain];
        [[NSRunLoop currentRunLoop] addTimer:myTimer forMode:NSDefaultRunLoopMode];
    }
}

这基本上可行,但是它看起来不像照片应用程序那么好。我正在设置alpha值的动画,因为我相信这看起来更像是照片应用,而不是使用隐藏的动画方法。我的问题是对状态栏做同样的事情。

我的问题: (1)状态栏是否有UIView? (2)有没有办法改变状态栏的alpha属性? (3)是另一个UIWindow中的状态栏? (4)是否有另一种使用“合法”方法实现此目的的方法(我需要将此应用程序放在应用程序商店中)?

我已经转储了UIApplication的windows属性,只有一个窗口,我已经抓取了视图层次结构,状态栏没有明显的视图。

任何想法?

1 个答案:

答案 0 :(得分:0)

状态栏由SpringBoard本身创建,它是SBStatusBar类(IIRC继承自UIWindow)。应用商店应用无法访问它。