Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 什么';这是处理UIPageControl的最好方法,因为它有太多的点,它们没有';屏幕上不适合所有人_Iphone_Ios_Uipagecontrol - Fatal编程技术网

Iphone 什么';这是处理UIPageControl的最好方法,因为它有太多的点,它们没有';屏幕上不适合所有人

Iphone 什么';这是处理UIPageControl的最好方法,因为它有太多的点,它们没有';屏幕上不适合所有人,iphone,ios,uipagecontrol,Iphone,Ios,Uipagecontrol,我的应用程序中有一个UIPageControl,它看起来非常好,大约有10页(点),但是用户可以添加许多不同的视图,因此点的数量可以变成30 当这种情况发生时,屏幕边缘的点就消失了,你不能总是看到当前选择的页面,这使它看起来很糟糕 有没有办法使pagecontrol多行,或者在当前可见页面从屏幕上消失时将其向左或向右移动。我创建了一个电子书应用程序,它使用包含UIWebView的UIScrollView。这本书有100多页,因此UIPageControl无法处理它,因为您指出的问题。我最终创建了

我的应用程序中有一个UIPageControl,它看起来非常好,大约有10页(点),但是用户可以添加许多不同的视图,因此点的数量可以变成30

当这种情况发生时,屏幕边缘的点就消失了,你不能总是看到当前选择的页面,这使它看起来很糟糕


有没有办法使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页,页面视图非常有用,是正确的选择。问题是,可以添加任意数量的页面,当这种情况发生时(不经常发生),我希望它不会看起来很糟糕。我看到它的实现方式是,如果页面数量超过可用空间,两个点的边缘将转换为箭头(旋转三角形)表明还有更多。你最终找到了更好的解决方案吗?