我正在创建一个iOS应用,我需要使用很多照片(大分辨率)。那里有近400张照片。我想用它们在UIImageView中显示在不同的页面上。 但它是一大堆数据。所以我害怕应用程序本身的有效(而不是那么多)和大小。在我的iOS应用中使用这些照片的最佳方式是什么?创建新图像集并为每张照片创建1x,2x和3x照片是否有意义,或者我是否必须使用我现在不想做的其他功能?
UPD1: 该应用程序是关于景点。从tableview用户可以选择任何视线,并将显示带有1-3张照片的屏幕(如果有超过1张照片,则显示在CollectionView中)和一些文字。我使用CoreData从sqlite db获取的所有数据(照片除外)。
屏幕上显示的照片宽度等于屏幕宽度(距离宽度25:38)。宽度更大:)
我有一个想法是以高分辨率存储它们并调整大小到任何设备(3x,2x,1x)以在屏幕上显示。只需在用户点击它以在全屏显示照片时加载高分辨率版本的照片。
答案 0 :(得分:2)
您无法加载应用中的所有照片 - 这是顺便说一句。因装载图像时出现内存问题而无法实现。
你应该在开始时考虑自己展示照片和照片。
要将照片保存在设备的内存中,您可以使用NSCache
- Apple's Documentation并让系统管理照片。您将加载此缓存并在NSCache
的实例中缓存,并且每次您想要访问它并获取照片时,您必须检查是否有照片或零,如果没有,则必须再次从中重新加载它磁盘。这将以某种方式使您的设备无法获得内存警告并自动管理照片。
更新1 :
UPD1:该应用程序是关于景点。从tableview用户可以选择任何地方,并将显示1-3张照片的屏幕(如果有超过1张照片,则在CollectionView中)和一些文字。我使用CoreData从sqlite db获取的所有数据(照片除外)。
该应用是一个离线应用,所以我想在应用中存储照片。我现在只是关于图像资产。但还有其他存储照片的方法吗?
您不需要资产目录。只需将其保存在项目的某个目录中,并在必要时从/ Documents目录加载它们。 IMO这将是在本地存储和使用的最佳方法。将它们保存在资产中会导致xcassets文件中的@ 1x和@ 2x为空。我认为将它们直接保存在项目中将更容易维护。
我想使用大分辨率的照片,因为我想通过点击显示全尺寸照片。 每张照片最大可以是2000px或更多。
我有一个想法是以高分辨率存储它们并调整大小到任何设备(3x,2x,1x)以在屏幕上显示。当用户点击照片以在全屏显示照片时加载高分辨率。
在应用程序中保留如此大的照片是个糟糕的主意,应用程序会很大。即使一张照片将是1mb大小,我认为是不可能的,并且有400张照片,应用程序将会很胖。
你应该考虑将它们保持在线,真的。
您还知道应用程序中的所有图像,因此您可以实时创建缩略图并将其缓存在/ Cache目录中供以后使用。对于指定设备屏幕分辨率的大照片也一样。在显示之前调整它并保存在/ Cache目录中以备将来下次使用。