Tôi đã quản lý để làm điều đó trong AppController. Chỉ cần đặt mã này ngay sau khi tạo glView
UIImage* image = [UIImage imageNamed:[self getLaunchImageName]];
if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)])
{
float screenScale = [[UIScreen mainScreen] scale];
if (screenScale > 1.)
image = [UIImage imageWithCGImage:image.CGImage scale:screenScale orientation:image.imageOrientation];
}
UIImageView *splashView = [[UIImageView alloc] initWithImage:image];
[viewController.view addSubview:splashView];
[splashView performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:0.1f];
Thật dễ dàng. Chỉ cần có được hình ảnh khởi động và biến nó biến mất sau một sự chậm trễ. Bạn sẽ cần mã getLaunchImage (dựa trên this comment, không thử nghiệm với iPhone 6 hay 6 cộng)
-(NSString*)getLaunchImageName
{
NSArray* images= @[@"LaunchImage.png",
@"[email protected]",
@"[email protected]",
@"[email protected]",
@"[email protected]",
@"[email protected]~ipad.png",
@"[email protected]~ipad.png",
@"LaunchImage-700-Portrait~ipad.png",
@"LaunchImage-Portrait~ipad.png",
@"[email protected]~ipad.png",
@"[email protected]~ipad.png",
@"LaunchImage-Landscape~ipad.png",
@"LaunchImage-700-Landscape~ipad.png",
@"[email protected]",
@"[email protected]",
@"[email protected]",
];
UIImage *splashImage;
if ([self isDeviceiPhone])
{
if ([self isDeviceiPhone4] && [self isDeviceRetina])
{
splashImage = [UIImage imageNamed:images[1]];
if (splashImage.size.width!=0)
return images[1];
else
return images[2];
}
else if ([self isDeviceiPhone5])
{
splashImage = [UIImage imageNamed:images[1]];
if (splashImage.size.width!=0)
return images[3];
else
return images[4];
}
else if ([self isDeviceiPhone6])
{
splashImage = [UIImage imageNamed:images[1]];
if (splashImage.size.width!=0)
return images[13];
else
return images[14];
}
else
return images[0]; //Non-retina iPhone
}
else if ([[UIDevice currentDevice] orientation]==UIDeviceOrientationPortrait || [[UIDevice currentDevice] orientation] == UIDeviceOrientationPortraitUpsideDown)//iPad Portrait
{
if ([self isDeviceRetina])
{
splashImage = [UIImage imageNamed:images[5]];
if (splashImage.size.width!=0)
return images[5];
else
return images[6];
}
else
{
splashImage = [UIImage imageNamed:images[7]];
if (splashImage.size.width!=0)
return images[7];
else
return images[8];
}
}
else
{
if ([self isDeviceRetina])
{
splashImage = [UIImage imageNamed:images[9]];
if (splashImage.size.width!=0)
return images[9];
else
return images[10];
}
else
{
splashImage = [UIImage imageNamed:images[11]];
if (splashImage.size.width!=0)
return images[11];
else
return images[12];
}
}
}
-(BOOL)isDeviceiPhone
{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
return TRUE;
}
return FALSE;
}
-(BOOL)isDeviceiPhone4
{
if ([[UIScreen mainScreen] bounds].size.height==480)
return TRUE;
return FALSE;
}
-(BOOL)isDeviceRetina
{
if ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] &&
([UIScreen mainScreen].scale == 2.0)) // Retina display
{
return TRUE;
}
else // non-Retina display
{
return FALSE;
}
}
-(BOOL)isDeviceiPhone5
{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone && [[UIScreen mainScreen] bounds].size.height==568)
{
return TRUE;
}
return FALSE;
}
-(BOOL)isDeviceiPhone6
{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone && [[UIScreen mainScreen] bounds].size.height>568)
{
return TRUE;
}
return FALSE;
}
Nguồn
2014-10-17 08:53:05
Cũng đừng mong đợi sử dụng để phá vỡ NDA, đặt cược tốt nhất của bạn là đặt câu hỏi này trên diễn đàn nhà phát triển – rckoenes
Nó được hỏi khoảng một tháng trước nhưng không có phản hồi cho đến nay. Tin tưởng rằng nó hay không, Apple Dev Diễn đàn là nơi vô dụng nhất để thảo luận về phát triển iOS. – erkanyildiz
Mặc dù nó là sự thật, mọi người có thể không muốn phá vỡ NDA bằng cách nói về nó ở đây. – rckoenes