代码之家  ›  专栏  ›  技术社区  ›  kmell96

iOS将图像添加到UITableView会导致显示时间过长

  •  0
  • kmell96  · 技术社区  · 7 年前

    我有一个 UIViewController 用一个 UITableView 在我的应用程序中。该表有12行。我只是在每一行中添加了一个图像(40px x 40px),其中包含以下简单的代码行 tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) :

    cell.imageView?.image = UIImage(named: "<image_name_for_row>")
    

    执行此操作后,页面显示所需的时间增加了约3倍。这是我对代码所做的唯一更改。第一次显示页面后,如果我再次显示视图控制器的相同实例,它几乎会立即显示;基本上和我添加图像之前一样快。因此,我只能假设在页面第一次显示后,图像会被缓存到某个位置。。。 有没有办法在应用程序加载时缓存图像,以避免我第一次显示视图时出现非常明显的延迟?

    我尝试输入以下代码 application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) :

    menuViewController.view.setNeedsLayout()
    

    但是,这并没有减少页面加载时间。这也未能缩短加载时间:

    _ = UIImage(named: "menu_row_1")
    ...
    _ = UIImage(named: "menu_row_12")
    

    有什么建议吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Puneet Sharma    7 年前

    有一个 known 使用时的性能影响 [init(named:)] 方法 尝试使用 this 相反对于bundle和traitCollection参数,只需传递nil:

    init(named:in:compatibleWith:)