假设我有一个捆绑或资产目录中的三个图像:

>默认〜iphone.png
> Default@2x~iphone.png
> Default-568h@2x.png

在iOS 4及更高版本上,UIImage构造函数可以采用以下图像名称:

[UIImage imageNamed:@"Default"];

当我在3.5英寸视网膜显示器(iphone)上时,它会自动选择图像(2).如果在非视网膜显示器上选择(1).这很棒.

我为4寸视网膜(iPhone 5)发射图像指定了图像3.有没有一种方法来命名图像(3),所以当我在4英寸视网膜显示器上运行时,它会返回与相同的UIImage构造函数?

也许这还没有实现,或者我期望太多的方便…我只是试图避免任何条件逻辑在我的代码中选择基于屏幕尺寸的图像.

解决方法

我也有同样的问题,事实证明,iPhone 5 / iPod Touch第5代没有这样的行为.

您必须手动确定您的App是否在这样的设备上运行,并相应地更改文件名.

我使用这种方法来检查我的应用程序是否在iPhone 5 / iPod Touch 5上运行.

#define IS_PHONEPOD5() ([UIScreen mainScreen].bounds.size.height == 568.0f && [UIScreen mainScreen].scale == 2.f && UI_USER_INTERFACE_IdioM() == UIUserInterfaceIdiomPhone)

然后可以调整图像名称:

if(IS_PHONEPOD5()) {
   myImageView.image = [UIImage imageNamed:@"MyImage-568h.png"];
} else {
   myImageView.image = [UIImage imageNamed:@"MyImage.png"];
}

更新
我还在github(Link)上找到了一个UIImage类,它可以实现你要查找的内容.它没有对现有文件的后备,但您可以自己轻松实现.

ios – UIImage imageNamed:不会自动选择视网膜@ 2x图像的更多相关文章

  1. ios – 如何为iPad 3命名图形文件

    正如我在iOS中所做的那样,我们可以将视网膜显示文件命名为name@2x.png.如何为iPad3命名文件ipad.png–iPad,iPad2ipad@2x.png–iPad3它是否正确?

  2. ios – 为视网膜和非视网膜显示开发OpenGL ES

    在深入了解我的下一个项目之前,我正在寻找建议.我想支持iOS现在支持的所有各种分辨率.开发人员完成这项工作最常见的方式是什么?感谢先进的所有帮助.编辑:我从Apple发现了这个:BlockquoteIfyourapplicationusesOpenGLESforrendering,yourexistingdrawingcodeshouldcontinuetoworkwithoutanychanges.Whendrawnonahigh-resolutionscreen,though,yourcontenti

  3. ios – 核心图形图像质量低

    我是CoreGraphics的新手,我试着画圆圈.它们可以是透明的(仅中风)并填充笔触颜色.所以方法看起来像这样:结果很奇怪–看起来图像的分辨率非常低.是否有可能使结果图像在视网膜显示器上看起来很好?

  4. ios – 使用CoreGraphics绘制视网膜显示 – 图像像素化

    在我的iOS应用程序中,我试图用CoreGraphics绘制曲线.绘图本身工作正常,但在视网膜显示器上,图像使用相同的分辨率绘制,不会使像素倍增.结果是像素化图像.我正在绘制使用以下功能:我发现的建议是usethescaleFactorproperty,或CGContextSetShouldAntialias()function,但这两个都没有帮助到目前为止.(虽然我可能不正确地使用它们)任何帮助

  5. ios – 视网膜显示屏上的标签栏图标

    我正在制作一个iPhone应用程序,但我不明白为什么我的自定义标签栏图标是像素化的.他们是30×30.例如,如果将分辨率更改为60×60,图标仍然是像素化的,但它们也不完整.你能帮我解决这个问题吗?

  6. 设置导航栏图标的尺寸ios

    参见英文答案>iosnavigationbaritemimagesize4个我想知道导航栏图标是否有任何默认大小.设计师需要设计它.它们应该为视网膜和非视网膜显示设计.目前我正在使用从互联网下载的图像,看起来不是很好.解决方法创建以下大小的导航栏图标:更多信息,你可以在这里找到https://developer.apple.com/library/ios/documentation/userexp

  7. IOS:屏蔽保持视网膜比例因子的图像

    解决方法我遇到过同样的问题.看来这条线忽略了比例因子.所以你应该自己画图像.替换为以下内容:我工作得很好.编辑要么

  8. iOS7 XIB问题.顶部和底部的空白区域

    我正在查看我正在设置ImageView.检查自动布局.它在预览中看起来不错,但是当应用程序实际在模拟器上运行时,只有在iPHone视网膜4英寸模拟器的顶部和底部都显示空白区域.在3.5英寸它看起来很好.使用iOS7和XCODE5.即使我从视图中删除了图像,仍然存在同样的问题.这个空白的原因是什么?解决方法我想你是忘记在你的项目中添加启动画面Default-568h@2x.png项目请检查属性并设置所需的启动画面Default-568h@2x.png并清理项目并再次运行

  9. objective-c – iPad 3应用程序开发的图像大小(分辨率)是多少?

    据我们所知,iPad3的分辨率为2048×1536.对于带有视网膜显示器的iPhone4,我们在我们的捆绑中放置了名为@2X的大图像和一个普通图像.因此,对于iPad3应用程序开发,我们还需要放置两个图像,一个是正常大小,另一个是大尺寸,@2X名称..?

  10. ios – UIImage imageNamed:不会自动选择视网膜@ 2x图像

    假设我有一个捆绑或资产目录中的三个图像:>默认iphone.png>Default@2x~iphone.png>Default-568h@2x.png在iOS4及更高版本上,UIImage构造函数可以采用以下图像名称:当我在3.5英寸视网膜显示器上时,它会自动选择图像.如果在非视网膜显示器上选择.这很棒.我为4寸视网膜发射图像指定了图像3.有没有一种方法来命名图像,所以当我在4英寸视网膜显示器上运行时,它会返回与相同的UIImage构造函数?

随机推荐

  1. iOS实现拖拽View跟随手指浮动效果

    这篇文章主要为大家详细介绍了iOS实现拖拽View跟随手指浮动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. iOS – genstrings:无法连接到输出目录en.lproj

    使用我桌面上的项目文件夹,我启动终端输入:cd然后将我的项目文件夹拖到终端,它给了我路径.然后我将这行代码粘贴到终端中找.-name*.m|xargsgenstrings-oen.lproj我在终端中收到此错误消息:genstrings:无法连接到输出目录en.lproj它多次打印这行,然后说我的项目是一个目录的路径?没有.strings文件.对我做错了什么的想法?

  3. iOS 7 UIButtonBarItem图像没有色调

    如何确保按钮图标采用全局色调?解决方法只是想将其转换为根注释,以便为“回答”复选标记提供更好的上下文,并提供更好的格式.我能想出这个!

  4. ios – 在自定义相机层的AVFoundation中自动对焦和自动曝光

    为AVFoundation定制图层相机创建精确的自动对焦和曝光的最佳方法是什么?

  5. ios – Xcode找不到Alamofire,错误:没有这样的模块’Alamofire’

    我正在尝试按照github(https://github.com/Alamofire/Alamofire#cocoapods)指令将Alamofire包含在我的Swift项目中.我创建了一个新项目,导航到项目目录并运行此命令sudogeminstallcocoapods.然后我面临以下错误:搜索后我设法通过运行此命令安装cocoapodssudogeminstall-n/usr/local/bin

  6. ios – 在没有iPhone6s或更新的情况下测试ARKit

    我在决定下载Xcode9之前.我想玩新的框架–ARKit.我知道要用ARKit运行app我需要一个带有A9芯片或更新版本的设备.不幸的是我有一个较旧的.我的问题是已经下载了新Xcode的人.在我的情况下有可能运行ARKit应用程序吗?那个或其他任何模拟器?任何想法或我将不得不购买新设备?解决方法任何iOS11设备都可以使用ARKit,但是具有高质量AR体验的全球跟踪功能需要使用A9或更高版本处理器的设备.使用iOS11测试版更新您的设备是必要的.

  7. 将iOS应用移植到Android

    我们制作了一个具有2000个目标c类的退出大型iOS应用程序.我想知道有一个最佳实践指南将其移植到Android?此外,由于我们的应用程序大量使用UINavigation和UIView控制器,我想知道在Android上有类似的模型和实现.谢谢到目前为止,guenter解决方法老实说,我认为你正在计划的只是制作难以维护的糟糕代码.我意识到这听起来像很多工作,但从长远来看它会更容易,我只是将应用程序的概念“移植”到android并从头开始编写.

  8. ios – 在Swift中覆盖Objective C类方法

    我是Swift的初学者,我正在尝试在Swift项目中使用JSONModel.我想从JSONModel覆盖方法keyMapper,但我没有找到如何覆盖模型类中的Objective-C类方法.该方法的签名是:我怎样才能做到这一点?解决方法您可以像覆盖实例方法一样执行此操作,但使用class关键字除外:

  9. ios – 在WKWebView中获取链接URL

    我想在WKWebView中获取tapped链接的url.链接采用自定义格式,可触发应用中的某些操作.例如HTTP://我的网站/帮助#深层链接对讲.我这样使用KVO:这在第一次点击链接时效果很好.但是,如果我连续两次点击相同的链接,它将不报告链接点击.是否有解决方法来解决这个问题,以便我可以检测每个点击并获取链接?任何关于这个的指针都会很棒!解决方法像这样更改addobserver在observeValue函数中,您可以获得两个值

  10. ios – 在Swift的UIView中找到UILabel

    我正在尝试在我的UIViewControllers的超级视图中找到我的UILabels.这是我的代码:这是在Objective-C中推荐的方式,但是在Swift中我只得到UIViews和CALayer.我肯定在提供给这个方法的视图中有UILabel.我错过了什么?我的UIViewController中的调用:解决方法使用函数式编程概念可以更轻松地实现这一目标.

返回
顶部