3

启动 iOS 应用程序时,屏幕会从 Default.png 跳转到界面。对于当前项目,我想从 Default.png 淡入应用程序界面。有没有好的方法来做到这一点?

4

5 回答 5

4

我拿了一些 rooster117 和 runmad 的答案,这就是我想出的。

将 UIImageView 添加到第一个 UIViewController 的属性中:

@interface DDViewController : UIViewController {
   ...
    UIImageView *coverImageView;
}

...

@property (nonatomic, retain) UIImageView *coverImageView;

然后,对于 iPad 应用程序的“主屏幕”,我调用以下命令:

- (void)viewDidLoad
{
    [super viewDidLoad];

    ...

    coverImageView = [[UIImageView alloc] init];
}

-(void)viewWillAppear:(BOOL)animated {
    UIImage *defaultImage;   
    if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)) {
        NSLog(@"Landscape!");
        defaultImage = [UIImage imageNamed:@"Default-Landscape.png"];
    } else {
        NSLog(@"Portrait!");
        defaultImage = [UIImage imageNamed:@"Default-Portrait.png"];
    }

    coverImageView = [[UIImageView alloc] initWithImage:defaultImage];
    [self.view addSubview:coverImageView];

}

-(void)viewDidAppear:(BOOL)animated {
    //Remove the coverview with an animation
    [UIView animateWithDuration:1.0f animations:^(void) {
        [self.coverImageView setAlpha:0.0];
    } completion:^(BOOL finished){
        [coverImageView removeFromSuperview];
    }];
}
于 2012-07-03T18:47:28.587 回答
2

是的,这并不难做到。我通过使用默认图像制作图像视图并仅对其进行动画处理来实现这一点。像这样的东西(放在第一个视图控制器的 viewDidLoad 中):

_coverImage = [UIImage imageNamed:@"Default.png"];
}

[self.view addSubview:_coverImage];

[UIView beginAnimations:@"FadeOutCover" context:nil];
[UIView setAnimationDuration:0.5f];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(removeAndDeleteCover)];

[_coverImage setAlpha:0.0f];

[UIView commitAnimations];

然后实现 removeAndDeleteCover 并执行:

[_coverImage removeFromSuperview];

希望这会有所帮助,如果您需要它作为通用应用程序在 iPad 上工作,您将必须检查这种情况并添加正确的默认图像。

于 2012-07-03T17:50:28.377 回答
0

有人在 cocoacontrols.com 上对其进行了控制

这是它的链接:http ://cocoacontrols.com/platforms/ios/controls/launchimagetransition

于 2012-07-03T18:17:08.597 回答
0

我似乎以这种方式在 ios7 中做到了这一点,认为它也应该与 6 一起使用?

https://stackoverflow.com/a/19377199/1734878

于 2013-10-15T09:09:47.880 回答
0

扩展 rooster117 的答案,您需要正确加载最终的“着陆点”,即您希望用户实际与之交互的视图控制器,然后再关闭“启动画面”视图控制器。这对于从网络加载数据的应用程序来说非常重要。

于 2012-07-03T18:48:11.930 回答