Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 2倍图像在视网膜设备上不工作_Objective C_Ios_Cocoa Touch - Fatal编程技术网

Objective c 2倍图像在视网膜设备上不工作

Objective c 2倍图像在视网膜设备上不工作,objective-c,ios,cocoa-touch,Objective C,Ios,Cocoa Touch,我有一个具有以下命名约定的图像。 它总是在视网膜设备上显示非2x版本。 我已经从派生数据中删除了缓存图像,但仍然没有显示。 如果我显式地将imageNamed设置为“Back”,它就会工作 这些是图片。 Back@2x.png Back.png 试一试 另外,确保映像的两个版本都列在“目标->构建阶段->复制捆绑资源”下。如果@2x版本不是,请确保在导入时选中“复制到目标组的文件夹(如果需要)”复选框。 另外,确保映像的两个版本都列在“目标->构建阶段->复制捆绑资源”下。如果@2x版本不是,请

我有一个具有以下命名约定的图像。 它总是在视网膜设备上显示非2x版本。 我已经从派生数据中删除了缓存图像,但仍然没有显示。 如果我显式地将imageNamed设置为“Back”,它就会工作 这些是图片。 Back@2x.png Back.png

试一试

另外,确保映像的两个版本都列在“目标->构建阶段->复制捆绑资源”下。如果@2x版本不是,请确保在导入时选中“复制到目标组的文件夹(如果需要)”复选框。


另外,确保映像的两个版本都列在“目标->构建阶段->复制捆绑资源”下。如果@2x版本不是,请确保在导入时选中“复制到目标组文件夹(如果需要)”复选框。

不应在ImageName:parameter中指定
.png

示例:文件应为名称
Back.png
Back@2x.png
;你的代码应该是

UIImage *backImage = [UIImage imageNamed:@"Back"];

不应在ImageName:参数中指定
.png

示例:文件应为名称
Back.png
Back@2x.png
;你的代码应该是

UIImage *backImage = [UIImage imageNamed:@"Back"];

这只是一种方法,但您可以从bundle获得路径:

// in this example, we load test.png from the bundle
NSString *pathToResource = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"png"];

这样做非常方便,因为它不仅自动确定是否使用图像的@2x版本,而且当您有本地化文件时,它还提供了当前用户区域设置的文件路径。这很方便,因为本地化文件不在主目录中,而是在它们自己的子文件夹中(例如,英语本地化文件在@“en.lproj”子文件夹中),而且按名称调用它们很麻烦,因为您需要完整的路径。此方法为您获取路径。

这只是一种方法,但您可以从捆绑包中获取路径:

// in this example, we load test.png from the bundle
NSString *pathToResource = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"png"];

这样做非常方便,因为它不仅自动确定是否使用图像的@2x版本,而且当您有本地化文件时,它还提供了当前用户区域设置的文件路径。这很方便,因为本地化文件不在主目录中,而是在它们自己的子文件夹中(例如,英语本地化文件在@“en.lproj”子文件夹中),而且按名称调用它们很麻烦,因为您需要完整的路径。此方法为您获取路径。

@Keller的答案应该有效。您确定正在使用png图像吗

@Keller的答案应该有用。您确定正在使用png图像吗

这是这里唯一正确的答案。使用imageNamed方法时不应使用.png扩展名。如果.png和@2x.png文件都存在并添加到目标,则将选择正确的x2图像。人们遇到的另一个非常常见的问题是命名约定。2X不起作用。确保你的图像是真实的Back@2x.png而不是Back@2X.png . 这也分别适用于ipad和ipad Retina的~ipad.png和@2x~ipad.png名称约定。此外,如果您试图使用iPhone4/5模拟器,您可能需要继续检查当前刻度。CGFloat屏幕比例=[[UIScreen Main Screen]比例];我的代码满足了您提到的所有要求,并且使用了iphone 5。请添加更多代码。我们需要了解您是如何使用此UIImage的。也许它只是被缩小/放大,而不是不被应用。我只是更新了代码。它显示的是不是2x的20x20图像。2x有40x40。这是这里唯一正确的答案。使用imageNamed方法时不应使用.png扩展名。如果.png和@2x.png文件都存在并添加到目标,则将选择正确的x2图像。人们遇到的另一个非常常见的问题是命名约定。2X不起作用。确保你的图像是真实的Back@2x.png而不是Back@2X.png . 这也分别适用于ipad和ipad Retina的~ipad.png和@2x~ipad.png名称约定。此外,如果您试图使用iPhone4/5模拟器,您可能需要继续检查当前刻度。CGFloat屏幕比例=[[UIScreen Main Screen]比例];我的代码满足了您提到的所有要求,并且使用了iphone 5。请添加更多代码。我们需要了解您是如何使用此UIImage的。也许它只是被缩小/放大,而不是不被应用。我只是更新了代码。它显示的是不是2x的20x20图像。2x有40x40。省略后缀是不好的做法。代码是正确的,并且正确性没有味道,请避免这样的缺陷:
在iOS 4和更高版本上,如果文件是PNG格式的,则无需指定.PNG文件扩展名。在iOS 4之前,必须指定文件扩展名。
省略后缀是一种不好的做法。代码是正确的,并且正确性没有味道,请避免这样的缺陷:
在iOS 4和更高版本上,如果文件是PNG格式的,则无需指定.PNG文件扩展名。在iOS 4之前,必须指定文件扩展名。