因此,我目前正在构建我的第一个应用程序,这只是一些简单的文本冒险练习。基本前提是我希望能够向用户解释冒险,呈现故事,并在每个可滚动页面的末尾为他们提供如何推进每个导致不同场景的故事的选项。
我意识到我需要分支许多不同的视图和segues,我目前正在使用当前的模态segue在场景之间转换但我有这样的担心,我可能最终导致内存问题这样做?从我过去所理解的是,以模态方式呈现下一页只是将其置于所有其他视图之上是正确的吗?
基本上我只是想找到最有效的转换选项,因为我还在学习基础知识。最终我将把数据分割到下一个视图,所以在冒险结束时我可以根据他们的选择向用户显示他们的特征值。有什么想法吗?
P.S。我认为到目前为止我选择出现模态的原因是它有我发现的最佳转换让我想到一本书(无法找到翻页过渡)
答案 0 :(得分:0)
为避免内存问题,您可以使用UIViewController
的{{1}}方法来交换控制器而不是故事板segue。您将在基本视图控制器中调用此方法,该控制器将显示您的可见视图控制器,类似于-transitionFromViewController:toViewController:duration:options:animations:completion:
处理此操作的方式。
或者,如果您想要一本看起来像书的东西,请考虑使用UINavigationController
。
答案 1 :(得分:0)
这取决于您呈现模式的位置。如果您从一个主视图控制器中显示它,那么之前的模式将被解除。
如果您要使用其他方法,例如导航控制器推送,它将持续构建视图层次结构并导致大量内存占用,前提是用户深入挖掘冒险。
P.S。我认为到目前为止我选择出现模态的原因是它有我发现的最佳转换让我想起一本书(无法找到翻页过渡)
就个人而言,我只会使用一个视图控制器,并使用transitionWithView
函数对视图进行动画处理。这将大大减少您的内存占用,并为用户提供有趣的转换。
class func transitionWithView(_ view: UIView,
duration duration: NSTimeInterval,
options options: UIViewAnimationOptions,
animations animations: () -> Void,
completion completion: ((Bool) -> Void)?)
有了这个,你可以提供各种各样的动画过渡,甚至可以随机化它,这样就不知道使用了哪一个和很酷的功能。以下是转换常量
static var TransitionNone: UIViewAnimationOptions { get }
static var TransitionFlipFromLeft: UIViewAnimationOptions { get }
static var TransitionFlipFromRight: UIViewAnimationOptions { get }
static var TransitionCurlUp: UIViewAnimationOptions { get }
static var TransitionCurlDown: UIViewAnimationOptions { get }
static var TransitionCrossDissolve: UIViewAnimationOptions { get }
static var TransitionFlipFromTop: UIViewAnimationOptions { get }
static var TransitionFlipFromBottom: UIViewAnimationOptions { get }