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