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