我应该为 iOS 文本冒险应用程序使用哪种类型的 segue?
What type of segue should I be using for iOS text adventure app?
所以我目前正在构建我的第一个应用程序,只是一些简单的文本冒险练习。基本前提是我希望能够向用户解释冒险,展示故事,并在每个可滚动页面的末尾为他们提供有关如何推进故事的选项,每个故事都会导致不同的场景。
我意识到我将需要使用许多不同的视图和 segue 进行分支,并且我目前在场景之间转换时使用 present modally segue,但我担心这样做最终可能会导致内存问题?根据我过去的理解,以模态方式呈现下一页只是将其置于所有其他视图之上是正确的吗?
本质上,我只是想找到最有效的过渡选项,因为我仍在学习基础知识。最终我也会将数据转移到下一个视图,所以在冒险结束时我可以根据用户的选择向他们展示他们的特征值。有什么想法吗?
P.S。我认为到目前为止我选择模态呈现的原因是它有我发现的最好的过渡让我想起了一本书(找不到翻页过渡)
为避免内存问题,您可以使用 UIViewController
的 -transitionFromViewController:toViewController:duration:options:animations:completion:
方法来交换您的控制器,而不是故事板转场。您将在显示可见视图控制器的基础视图控制器中调用此方法,有点像 UINavigationController
处理此问题的方式。
或者,如果您想要看起来像书的东西,请考虑使用 UIPageViewController
。
这取决于您在何处呈现模态。如果您从一个主视图控制器中呈现它,那么先前的模态将被取消。
如果您要使用其他方法,例如导航控制器推送,它会不断构建视图层次结构,并在用户深入探索冒险的情况下导致大量内存占用。
P.S. I think the reason I chose present modally so far was it had the best transition I have found that makes me think of a book (Couldn't find a page flip transition)
就我个人而言,我只会使用一个视图控制器并使用 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 }
所以我目前正在构建我的第一个应用程序,只是一些简单的文本冒险练习。基本前提是我希望能够向用户解释冒险,展示故事,并在每个可滚动页面的末尾为他们提供有关如何推进故事的选项,每个故事都会导致不同的场景。
我意识到我将需要使用许多不同的视图和 segue 进行分支,并且我目前在场景之间转换时使用 present modally segue,但我担心这样做最终可能会导致内存问题?根据我过去的理解,以模态方式呈现下一页只是将其置于所有其他视图之上是正确的吗?
本质上,我只是想找到最有效的过渡选项,因为我仍在学习基础知识。最终我也会将数据转移到下一个视图,所以在冒险结束时我可以根据用户的选择向他们展示他们的特征值。有什么想法吗?
P.S。我认为到目前为止我选择模态呈现的原因是它有我发现的最好的过渡让我想起了一本书(找不到翻页过渡)
为避免内存问题,您可以使用 UIViewController
的 -transitionFromViewController:toViewController:duration:options:animations:completion:
方法来交换您的控制器,而不是故事板转场。您将在显示可见视图控制器的基础视图控制器中调用此方法,有点像 UINavigationController
处理此问题的方式。
或者,如果您想要看起来像书的东西,请考虑使用 UIPageViewController
。
这取决于您在何处呈现模态。如果您从一个主视图控制器中呈现它,那么先前的模态将被取消。
如果您要使用其他方法,例如导航控制器推送,它会不断构建视图层次结构,并在用户深入探索冒险的情况下导致大量内存占用。
P.S. I think the reason I chose present modally so far was it had the best transition I have found that makes me think of a book (Couldn't find a page flip transition)
就我个人而言,我只会使用一个视图控制器并使用 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 }