Apple Page Control 示例代码给出黑屏

Posted

技术标签:

【中文标题】Apple Page Control 示例代码给出黑屏【英文标题】:Apple Page Control sample code gives black screen 【发布时间】:2019-04-22 16:33:39 【问题描述】:

我下载了 Apple 的 PageControl Sample Code 以尝试学习如何在用户滚动时创建延迟加载的页面。然而,当我滚动图片时,开箱即用消失了,我得到了一个黑屏。是否应该发生代码中的错误。

【问题讨论】:

对我来说效果很好...您进行了任何编辑吗?该示例使用 Swift 4——您是否将其自动转换为更高的 Swift 版本? 顺便说一句...这是一个不好的例子。它不能正确处理设备旋转。 @DonMag 我没有进行任何编辑,我按原样使用该项目。我注意到它在快速滑动时发生。我同意这不是最好的例子,但由苹果提供 有两点值得注意.... 1) 该示例已过时,不再更新,2) 没有苹果 example 代码应被视为生产级代码。它们是获得展示想法的示例。 @DonMag 感谢您的建议是否有更多相关示例可以推荐更适合演示此技术? 【参考方案1】:

您在运行应用程序之前是否编辑过代码?

通过在 viewDidLayoutSubviews 方法调用中注释掉 _ = setupInitialPages 调用,我能够重现您的问题。未注释,该应用运行良好。

延迟加载变量要记住的是,它们在被调用之前不会被填充,这就是延迟加载的全部意义所在。如果没有对延迟加载变量的引用,它将不会被实例化,并会产生您在测试中看到的结果。

延迟加载变量的语法是:

lazy var someVarName: the variable type e.g. Int, UIIMage, String... whatever = // Code in here to populate the variable return variable with the declared type ()

您需要确保对惰性 var 的调用返回与类型匹配。还要记住,一个惰性 var 虽然称为变量,但一旦设置就不会改变,在这方面更像是一个常量。有一些解决方法,但它们已经在这里解决了......Re-initialize a lazy initialized variable in Swift

【讨论】:

感谢您的详细回答我没有更改下载项目中的代码。我注意到在快速浏览页面时会出现此问题。我相信这个问题与延迟加载页面有关。但是我不确定如何解决它。

以上是关于Apple Page Control 示例代码给出黑屏的主要内容,如果未能解决你的问题,请参考以下文章

图像尺寸不适用于 Page Control 和 ScrollView?

iPhone - Page Scroll View Help,停止不同的视图控制器分配

《iOS Human Interface Guidelines》——Page Control

iPhone Page Control 仅显示在 UIScrollView 的第一页上

Control.UniqueId 何时创建?

Tkinter中的多个键事件绑定 - “Control + E”“Command(apple)+ E”等