如果我理解正确,请查看UICollectionViews。他们非常投入,但他们的行为就像一个超级强大的UITableViews,几乎可以做任何事情(包括基本的分页和水平/垂直滚动。
尝试使用单行设置 UICollectionViewFlowLayout 并使元素填满整个页面(例如,使用 func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize 动态调整单元格大小以填充您的视口)
然后将UICollectionViewCell 子类化为您想要的那种“页面”。
这有点牵扯,你会阅读很多 docs 但这可能是做你想做的最好的方式,如果你决定你想要超过 5-10 页,它很容易扩展或者你想要为每个页面添加更多 UI。
一个不那么灵活的更简单的替代方法是创建一个带有方法/初始化程序的UIView 子类,以便用您需要的数据填充它,然后对所有数据运行一个 for 循环,创建UIScrollView 内的页面,其中每个的框架是 CGRect(x: screenWidth * i, y: 0, width: screenWidth, height: yourHeight),其中 i 是您的 for 循环变量,以便页面边缘到边缘并填满屏幕。当然根据自己的情况调整公式。
重新阅读您的问题后,您可能只是想要一个静态标签,该标签会根据页面中可滚动的内容更改其内容。为此,将UILabel 作为子视图添加到包含滚动视图的同一父视图中,将其添加在 UIScrollView 之后(或者只需调用bringSubviewToFront 以将其作为z-index forward) 使其位置独立于滚动视图。要使用页面滚动更新它,请连接到 func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) 并通过
从
targetContentOffset 计算页面
let offset = targetContentOffset.memory
let page = Int(offset.x / scrollView.frame.size.width)
然后使用页面作为索引从数据数组中填充标签(但请确保检查数组边界,因为滚动到任一边缘可能会产生 -1 或 array.count 甚至更多)。
编码愉快,抱歉有多种选择!如果我仍然没有回答您的问题,请告诉我