1

我有一张高分辨率图像,我想将其用作视图的背景。但是,当我通过 Interface Builder 或以编程方式添加它时,我只看到它的一部分。这无济于事:

UIImage* _backGround = [UIImage imageNamed:@"background-clean@2x.png"];
  CGRect _viewFrame = self.view.frame;
 [_backGround drawInRect:_viewFrame];
UIImageView* _backGroundView = [[UIImageView alloc] initWithImage:_backGround];
[self.view addSubview:_backGroundView];
[self.view sendSubviewToBack:_backGroundView];

这也是:

_backGroundView.contentMode =UIViewContentModeScaleAspectFit;

那么问题是如何缩放此图像以使其适合全尺寸的视图,而不管其大小如何?PS对不起我的英语不好。

4

3 回答 3

2

我同意 Ali 的观点,在创建视网膜大小的图像时,您还应该缩放它们并将它们的较小版本添加到您的项目中。对于这两个版本,您可以简单地指定图像的全名,而无需使用@2x.png.png扩展名。

但是,要修复您的实现,您只需要一行额外的代码:

UIImage* _backGround = [UIImage imageNamed:@"background-clean"];
UIImageView* _backGroundView = [[UIImageView alloc] initWithImage:_backGround];

_backGroundView.frame = self.view.frame;

[self.view addSubview:_backGroundView];
[self.view sendSubviewToBack:_backGroundView];

一旦你改变了frameUIImageView,它的内容(即你的图像)也会缩放。

于 2013-02-03T17:47:24.813 回答
0

引用图像名称时不得包含@2x在代码中!

你应该:

  • 包括两个文件Background.pngBackground@2x.png你的 Xcode 项目资源,Background@2x.png大小(以像素为单位)的两倍Background.png
  • 但始终将此文件(例如在 中imageNamed:)称为@"Background.png",甚至只是@"Background"[UIImage imageNamed:@"Background"]

然后 iOS 将自行发挥其魔力,根据设备屏幕是否为 RetinaBackground.png选择正确的图像。Background@2x.png

有关详细信息,请参阅 Apple 文档中的此处

于 2013-02-03T15:37:20.960 回答
0
[self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background-clean"]]];
于 2014-04-14T16:25:53.410 回答