SwiftUI 封装 UIScrollView 实现高性能轮播图掌握updateUIView使用技巧
每当依赖数据的某些绑定更新时,Representable就会更新,因此,updateUIView当图像更改时,您需要在update中重建内部结构。
本文价值与收获
看完本文后,您将能够作出下面的界面
基础知识
UIScrollView
允许滚动和缩放其包含的视图的视图。
class UIScrollView : UIView
使用教程
UIScrollView是包括和在内的多个UIKit类的超类。UITableViewUITextView
对象(或简单地说是滚动视图)的中心概念是它的原点可在内容视图上调整的视图。它将内容剪切到其框架上,该框架通常(但不一定)与应用程序主窗口的内容一致。滚动视图可跟踪手指的运动并相应地调整原点。“通过”滚动视图显示其内容的视图基于新原点绘制其自身的该部分,该原点固定到内容视图中的偏移量。滚动视图本身不绘制任何图形,只显示垂直和水平滚动指示符。滚动视图必须知道内容视图的大小,以便知道何时停止滚动。默认情况下,当滚动超出内容范围时,它将“弹回”。
管理滚动视图中显示的内容绘图的对象应平铺内容的子视图,以使任何视图都不会超出屏幕的大小。当用户在滚动视图中滚动时,此对象应根据需要添加和删除子视图。
因为滚动视图没有滚动条,所以它必须知道触摸是否表示要滚动的意图与跟踪内容中子视图的意图。为了进行此确定,它通过启动计时器来暂时拦截触地事件,并在计时器启动之前查看触摸的手指是否有任何移动。如果计时器触发时位置没有明显变化,则滚动视图会将跟踪事件发送到内容视图的触摸子视图。如果用户然后在计时器过去之前将其手指拖到足够远,则滚动视图将取消子视图中的任何跟踪,并自行执行滚动。子类可以覆盖,和方法(其由滚动视图调用)来影响滚动视图手柄如何滚动手势。
滚动视图还可以处理内容的缩放和平移。当用户做出放大或缩小手势时,滚动视图会调整内容的偏移量和比例。当手势结束时,管理内容视图的对象应根据需要更新内容的子视图。(请注意,手势可能会结束,而手指可能仍会放下。)在进行手势时,滚动视图不会将任何跟踪调用发送到子视图。