背景图象太大在窗口/看法 - 第2部分

时间:2013-12-08 05:27:50

标签: objective-c

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:

3 个答案:

答案 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];