Я пытаюсь отключить заставку iPad, чтобы через 2 секунды открыть основной интерфейс моего приложения. Основной интерфейс - это мой главный контроллер вида и вида внутри контроллера навигации.
Итак, я сделал следующее:
UINavigationController с моим корневым контроллером представления.
Контроллер корневого представления имеет весь интерфейс и, в качестве последнего шага, CALayer с тем же png, который используется для заставки, покрывающей интерфейс.
Идея состоит в том, что после того, как реальный экран-заставка исчезнет, все еще будет CALayer. А затем я исчезаю CAlayer, чтобы открыть интерфейс. Это вроде работает: происходит затухание, но независимо от того, какую длительность я установил для анимации, оно все равно происходит слишком быстро.
Вот код: (logoLayer - это ivar, а mainCanvas - представление контейнера внутри self.view, в которое я вставляю большинство подпредставлений - для других эффектов типа затемнения экрана.)
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
// Custom initialization
self.view.layer.backgroundColor = [UIColor clearColor].CGColor;
[self setLayerContent:[[NSBundle mainBundle] pathForResource:@"interfaceBackground" ofType:@"png"]];
[self layoutNavigationButtonWithResource:@"button1" glowing:YES forAction:@"biblioteca"];
[self layoutNavigationButtonWithResource:@"button2"glowing:YES forAction:@"portfolio"];
NSString *logoPath = [[NSBundle mainBundle] pathForResource:@"Default-Portrait~ipad" ofType:@"png"];
UIImage *image = [UIImage imageWithContentsOfFile:logoPath];
logoLayer = [[CALayer layer] retain];
logoLayer.contents = (id)image.CGImage;
logoLayer.bounds = CGRectMake(0, 0, image.size.width, image.size.height);
logoLayer.anchorPoint = CGPointMake(0, 0);
logoLayer.opacity = 1;
[mainCanvas.layer addSublayer:logoLayer];
}
return self;
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self performSelector:@selector(fadeOutLogo) withObject:nil afterDelay:0.1];
}
- (void)fadeOutLogo
{
CABasicAnimation *a = [CABasicAnimation animation];
a.duration = 10;
[logoLayer addAnimation:a forKey:@"opacity"];
[logoLayer setOpacity:0];
}
Обратите внимание, что я даже отложил вызов кода анимации на всякий случай. И у меня тоже получилось значение 10сек. что абсурдно для исчезновения. Тем не менее ... исчезновение происходит примерно через 0,2 с.
Есть мысли?