Iphone 什么';这是处理UIPageControl的最好方法,因为它有太多的点,它们没有';屏幕上不适合所有人
我的应用程序中有一个UIPageControl,它看起来非常好,大约有10页(点),但是用户可以添加许多不同的视图,因此点的数量可以变成30 当这种情况发生时,屏幕边缘的点就消失了,你不能总是看到当前选择的页面,这使它看起来很糟糕Iphone 什么';这是处理UIPageControl的最好方法,因为它有太多的点,它们没有';屏幕上不适合所有人,iphone,ios,uipagecontrol,Iphone,Ios,Uipagecontrol,我的应用程序中有一个UIPageControl,它看起来非常好,大约有10页(点),但是用户可以添加许多不同的视图,因此点的数量可以变成30 当这种情况发生时,屏幕边缘的点就消失了,你不能总是看到当前选择的页面,这使它看起来很糟糕 有没有办法使pagecontrol多行,或者在当前可见页面从屏幕上消失时将其向左或向右移动。我创建了一个电子书应用程序,它使用包含UIWebView的UIScrollView。这本书有100多页,因此UIPageControl无法处理它,因为您指出的问题。我最终创建了
有没有办法使pagecontrol多行,或者在当前可见页面从屏幕上消失时将其向左或向右移动。我创建了一个电子书应用程序,它使用包含UIWebView的UIScrollView。这本书有100多页,因此UIPageControl无法处理它,因为您指出的问题。我最终创建了一个自定义的“slider”类型的视图,其行为类似于UIPageControl,但可以处理大量页面。这正是你需要做的。UIPage控件无法处理所需数量的页面…计算页面/点比率并存储为浮点值。然后将当前点号计算为当前页/pagesPerDot。在看到点移动之前,您可能需要提前几页,但它的可伸缩性非常好。我必须在有30个项目的水平集合视图下实现UIPageControl。所以我通过固定点的数量来减少点的数量,并且只滚动这些点。请遵循以下代码:
@IBOutlet var pageControl: UIPageControl!
var collectionDataList = [String]
let dotsCount = 5
override func viewDidAppear(_ animated: Bool) {
if collectionDataList.count < dotsCount {
self.pageControl.numberOfPages = collectionDataList.count
} else {
self.pageControl.numberOfPages = dotsCount
}
}
func scrollViewDidScroll(_ scrollView: UIScrollView)
{
let pageWidth = scrollView.frame.width
self.currentPage = Int((scrollView.contentOffset.x + pageWidth / 2) / pageWidth)
self.pageControl.currentPage = self.currentPage % dotsCount
}
@IBOutlet var pageControl:UIPageControl!
var collectionDataList=[String]
让dotscont=5
覆盖函数视图显示(u动画:Bool){
如果collectionDataList.count
我的解决方案是设置最大点数,并在最后一个点数之前显示该点数,直到用户到达终点。如果当前页码大于最大点数,我们将显示最后一个页码之前的页码,直到用户到达末尾
var maxDotCount = 8 //Global constant.
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
let pageWidth = collectionView.frame.size.width
let currentPage = collectionView.contentOffset.x / pageWidth
let pageControlsNumberOfPages = pageControl.numberOfPages - 1
let dataSourceCount = CGFloat(dataSourceArr.count - 1)
let maxDotCountReduced = CGFloat(maxDotCount - 1)
if (dataSourceCount > maxDotCountReduced) {
if (currentPage >= maxDotCountReduced) {
if (currentPage == dataSourceCount) {
pageControl.currentPage = pageControlsNumberOfPages
} else {
pageControl.currentPage = pageControlsNumberOfPages - 1
}
return
}
}
pageControl.currentPage = Int(currentPage)
}
我将最大页数设置为20页(在纵向模式下,iPhone 5S/SE最多可容纳20页)。。如果我在一个超过20页的页面上,我会把圆点放在同一个地方,但是把圆点变成红色。我想人们意识到了这意味着什么,我经常在屏幕上也有一个数字页码,还有第一个和最后一个按钮,我觉得人们对看到点在初始页面上移动更感兴趣。
据我所知,如果你有这么多页面,最好使用UIPageControl以外的任何方法。这不是一种典型情况,99%的时间只有5-6页,页面视图非常有用,是正确的选择。问题是,可以添加任意数量的页面,当这种情况发生时(不经常发生),我希望它不会看起来很糟糕。我看到它的实现方式是,如果页面数量超过可用空间,两个点的边缘将转换为箭头(旋转三角形)表明还有更多。你最终找到了更好的解决方案吗?