2015-07-19 40 views
-1

我正在创建一个iOS应用程序,我需要使用许多照片(以高分辨率)。有近400张照片。我想用它们在UIImageView中显示在不同的页面上。 但这是一大堆数据。所以我害怕应用程序本身的高效(不是很多)和大小。在iOS应用中使用这些照片的最佳方式是什么?创建新图像集并为每张照片创建1x,2x和3x照片是否有意义,还是必须使用我现在没有的其他功能?如何在iOS应用程序中使用大量照片

UPD1: 该应用程序是关于景点。从桌面视图中,用户可以选择任何视力,并在屏幕上显示1-3张照片(如果超过1张照片,则在CollectionView中显示)和一些文字。所有数据(除了照片)我从使用CoreData的sqlite数据库中获得。

照片显示在屏幕上的宽度等于屏幕宽度(高度为宽度的25:38)。宽度更大:)

  1. 我想使用大分辨率的照片,因为我想显示全尺寸 照片点击。
  2. 每张照片在最大的 一侧可以是2000px或更多。
  3. 该应用程序是一个离线应用程序,所以我想存储照片在 应用程序。我现在只是关于图片资产。但有没有其他方式 存储照片?

我有一个想法,他们在高分辨率和调整大小,以任何设备(3倍,2倍,1倍)显示在屏幕上。并且在用户点击它时加载照片的高分辨率版本以在全屏幕上显示照片。

回答

2

无法加载应用中的所有照片 - 这是btw。由于加载图像期间的内存问题而无法实现。

你应该在开始时考虑自己呈现照片和照片。

  • 您真的需要以高分辨率显示照片吗?
  • 什么大分辨率意味着什么?是那个1024x1024或原始分辨率还是什么?
  • 从这些照片的加载位置?应用程序包括它,否则你会从系统库中加载它们?我看到你正在写图片资源,可能你想让他们留在应用程序中。
  • 您是否需要在几乎0次的恒定时间内显示此图像?也许把它保留在后端,并在必要时获取和缓存将是更好的方法。有了这个,你可以减小应用程序的大小。
  • 您可以在资产中仅保留最大的资产 - @ 3x,并在显示它之前将其重新调整到运行时需要此设备的设备上。

要将照片保存在设备的内存中,您可以使用NSCache - Apple's Documentation并让系统管理照片。你会在NSCache的实例中加载这个缓存,并且每次你想要访问它并获取照片时,你都必须检查是否有照片或零,如果不需要再次从磁盘重新加载它。这会以某种方式让您的设备不会获得内存警告,并会自动管理照片。

  • 另一个重要的问题是如何计划显示照片。一次只能显示1个,还是有更多显示?你想呈现他们的缩略图,并在用户选择一些照片显示在大分辨率?使用缩略图将减少内存占用。

更新1

UPD1:该应用程序是关于景点。从tableview用户可以选择任何地方,并将显示1-3张照片(如果有超过1张照片的话,在CollectionView中)和一些文本。所有数据(除了照片)我从使用CoreData的sqlite数据库中获得。

该应用程序是一个离线应用程序,所以我想将照片存储在应用程序中。我现在只是关于图片资产。但是还有其他方式来存储照片吗?

您不需要为此设置资产目录。只需将其保存在项目中的某个目录中,并在必要时从/ Documents目录加载它们即可。国际海事组织这将是在本地储存和使用的最佳方法。将它们保留在资产中会导致在xcassets文件中会有@ 1x和@ 2x为空。直接将它们保留在项目中会让我更容易维护。

我想使用大分辨率的照片,因为我想通过点击显示全尺寸的照片。 每张照片的最大面可以是2000px或更多。

我有一个想法来存储他们的高分辨率和调整到任何设备(3倍,2倍,1倍)显示在屏幕上。并且当用户点击照片以在全屏幕上显示照片时加载高分辨率。

在应用中保留这么大的照片是个不好的主意,应用会很大。即使一张照片的尺寸是1mb,我认为这是不可能的,并且有400张照片,这个应用程序会很胖。

你应该考虑让他们保持在线,真的。

您还可以了解应用程序中的所有图像,以便您可以实时创建缩略图并将它们缓存在/ Cache目录中供以后使用。与指定设备屏幕分辨率的大照片相同。在显示之前调整大小并保存在/ Cache目录中以备将来下次使用。

+0

我已经更新了我的问题,因为更新是对评论大。我想知道在应用程序中存储这么多照片的最佳方式以及如何有效地控制它们以显示。比你 – DenFav

+0

更新了我的答案。 –

+0

“只要将其保存在项目的某个目录中,并在必要时从/ Documents目录加载它们即可。”我了解你吗?要存储照片,我必须将它们保存到'[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; '? – DenFav

相关问题