2011-01-20 6 views
6

私のアプリケーションでは、UIPageControlは10ページ程度で完璧に見えますが、多くの異なるビューを追加すると、ドットの数は30になる可能性があります。何点もありますが、ドットが多すぎて画面に収まらないUIPageControlを処理するにはどうすればいいですか?

この場合、ドットが画面の端から消えるだけで、現在選択されているページがすべて表示されるわけではありません。ひどく見える

pagecontrolを複数行にする方法、または現在表示されているページが画面から消えた時点で左右に移動する方法はありますか。

+0

私の知る限り、たくさんのページをお持ちの場合は、UIPageControl以外の方法を使用することをお勧めします。 – Sarah

+0

これは典型的な状況ではなく、時間の99%は5〜6ページしかなく、ページビューは便利で正しい選択です。問題は、あなたが好きなだけ多く追加することが可能であり、これが起こるとき(頻繁ではない)、私はそれがひどく見えないようにしたいと思います。 – BinaryGuy

+0

私は、ページ数が使用可能なスペースを超えた場合、エッジの2つのドットが矢印(回転された三角形)に変換され、より多くのものがあることを示すように実装されていることがわかりました。 – Andrej

答えて

3

UIWebViewを含むUIScrollViewを使用するeBookアプリケーションを作成しました。 UIPageControlがあなたが指摘した問題のためにそれを処理できなかったように、本は100ページ以上ありました。私は、UIPageControlと同様の動作をするが、多数のページを扱うことができるカスタムの「スライダー」タイプのビューを作成しました。それはあなたがする必要のあるものです。 UIPageコントロールは、必要な数のページを処理できません。

+2

カスタムスライダーを見せてください。 – user403015

2

ページ/ドット率を計算し、float値として保存します。現在のドット数を現在のpage/pagesPerDotとして計算します。ドット移動を見る前に、いくつかのページを進める必要があるかもしれませんが、非常にスケーラブルであり、うまく動作します。

0

私は、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 

} 
関連する問題