sangony这里的代码对我来说非常好,但仅适用于iPhone
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
CGRect viewFrame = CGRectMake(0, 0, 320, 568);
UIImage *background = [UIImage imageNamed:@"BG.png"];
UIImage *scaledImage = [UIImage imageWithCGImage:[background CGImage]
scale:(background.scale * 2.0)
orientation:(background.imageOrientation)];
UIImageView *backgroundView = [[[UIImageView alloc] initWithImage:scaledImage] initWithFrame:viewFrame];
[[self window] addSubview:backgroundView];
[[self window] sendSubviewToBack:backgroundView];
self.window.backgroundColor = [UIColor clearColor];
[self.window makeKeyAndVisible];
return YES;
}
现在我如何针对iPhone和iPad进行同样的想法?
可以找到原始帖子Here:
答案 0 :(得分:0)
虽然我不是UI专家,但有一点很奇怪:
CGRect viewFrame = CGRectMake(0, 0, 320, 568);
为什么viewFrame
的大小是硬编码的?它不应该取决于你所针对的屏幕吗?它应该与屏幕尺寸成正比。
此外,背景图片的尺寸应与屏幕尺寸不同,iPad和iPhone的分辨率也不同。
为此,您可以根据屏幕尺寸使用屏幕尺寸选择合适的图像,也可以缩放图像。
答案 1 :(得分:0)
CGRect viewFrame = CGRectMake(0, 0, 320, 568);
我很确定你可以完全摆脱这行代码:
UIImageView *backgroundView = [[[UIImageView alloc] initWithImage:scaledImage] initWithFrame:viewFrame];
现在将viewFrame
更改为self.window.frame
。
在您的示例中,您对帧进行了硬编码,因此无论设备是什么,它始终都是那么大。
答案 2 :(得分:0)
获取窗口的边界并设置框架
UIImageView *backgroundView = [[[UIImageView alloc] initWithImage:scaledImage] initWithFrame:self.window.bounds];