gpt4 book ai didi

iphone - 在 UIPageControl 上加载 ViewController 的替代方法

转载 作者:可可西里 更新时间:2023-11-01 04:02:49 25 4
gpt4 key购买 nike

在我的项目中,我使用 UIPageControl 作为容器 UIViewController 进行滚动。我使用了本教程(使用 ARC 和 Storyboard):http://www.wannabegeek.com/?p=168和源代码:https://github.com/wannabegeek/PageViewController如您所见,项目中有 3 个 ViewControllers,它们被添加为 CustomPagerViewController 的子项。在那个项目中,只添加了 3 个 ViewControllers,但在我的项目中,我得到了 3 个以上的 ViewControllers,我还将它们与另一个文本、图像、标签等一起重用。 在上面。问题是在项目中,所有那些 ViewControllers 都会在加载 CustomPagerViewController 时加载,这会消耗内存,所以我正在寻找另一种方法来处理这个问题问题而不是一次加载它们?

最佳答案

您不应该尝试以这种方式优化 Controller 分配。显然,在内存中保留 View Controller 会占用空间,但相信我,并没有那么多。

我们必须区分 Controller 和它的 View 。为了在屏幕上显示自己, View 会占用大量内存,但 iOS 已经有自己的机制在不再需要时释放这些内存(即: View 不在屏幕上/没有窗口) .

iOS View Controller 过去常常自己释放 View 内存(这种行为在 [UIViewControllers didReceiveMemoryWarning] 中),但在 iOS 6 中不再是这种情况。现在你有责任这样做,因为你觉得它需要你的应用程序。请记住,尽管在此方法(或 dealloc)中取消了这些 View ,但您不会节省太多内存,因为用于在屏幕中显示 View 的大部分(图形)资源可能已被 iOS 释放,并且您最终可能释放的内存量接近于 0。

总而言之,在您的情况下,我将使用 this guide 将 PagerViewController 转换为合适的 iOS 容器 Controller 。 .关键是调用下面的方法:

[UIViewController addChildViewController:]
[UIViewController willMoveToParentViewController]
[UIViewController removeFromParentViewController]
[UIView addSubview:]
[UIView removeFromSuperview]

根据您的需要以正确的顺序排列。在您的情况下,您可以在 scrollViewDidScroll 方法中添加/删除它们。以这种方式使用它们,让 Apple 的魔法发生。

你不妨使用 UIPageViewController这为您提供了一些不错的开箱即用功能。

关于iphone - 在 UIPageControl 上加载 ViewController 的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15740154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com