web-dev-qa-db-ja.com

UIPageViewControllerのUIPageControlのインジケーターのサイズを大きくします

UIPageViewControllerのインジケーターのサイズを増やすことは可能ですか?

私はこれを持っています:

そして、私の要件はこれです:

22
Anurag Sharma

ページコントロールを拡大縮小すると、ドットが拡大縮小されますが、ドット間の間隔も拡大縮小されます。

pageControl.transform = CGAffineTransform(scaleX: 2, y: 2)

ドット間の間隔を同じにしたい場合は、ドットを個別に変換する必要があります。

pageControl.subviews.forEach {
    $0.transform = CGAffineTransform(scaleX: 2, y: 2)
}

ただし、viewDidLoadでこれを行うと、ビューが表示されるまでに変換がリセットされているため、viewDidLayoutSubviews…でこれを行う必要があります。

override func viewDidLayoutSubviews() {
    pageControl.subviews.forEach {
        $0.transform = CGAffineTransform(scaleX: 2, y: 2)
    }
}

enter image description here

66
Ashley Mills

UIPageControlを使用して、次のようにスケーリングできます。

@IBOutlet weak var pageControl: UIPageControl!

 override func viewDidLoad() {
    super.viewDidLoad()
    pageControl.transform = CGAffineTransform(scaleX: 2, y: 2); //set value here
}

それに伴う問題は、ドット間のスペースも大きくなることです。あなたのドットで正確なデザインをしたい場合は、サードパーティのコントロールを使用する必要があります: https://www.cocoacontrols.com/

5
Makaille

For Swift 2.0はpageControl Indicatorのサイズを増減するため)

self.pageControl.transform = CGAffineTransformMakeScale(0.8, 0.8)

OR

self.pageControl.transform = CGAffineTransformMakeScale(1.3, 1.3)
3
Hardik Thakkar

まず、viewDidLoad()内にuiPageControlオブジェクトを作成し、要件に従ってy位置を設定し、以下のようにCAAffiniteTransformを使用して必要なスケールを適用します。

        var pageControl = UIPageControl()
        pageControl.pageIndicatorTintColor = UIColor.gray
        pageControl.currentPageIndicatorTintColor = UIColor.yellow

        pageControl.transform = CGAffineTransform(scaleX: 1.3, y: 1.3) // set dot scale of pageControl

        pageControl.backgroundColor = UIColor.darkGray
        pageControl.numberOfPages = 3
        pageControl.center = self.view.center 
        self.view.addSubview(pageControl) // add pageControl to view

        pageControl.layer.position.y = self.view.frame.height - 100; // y position of the pageControl
1
Frankenxtein

Swift 4、4.2および5

最初にページ制御のアウトレットを作成します

@IBOutlet weak var pageControl: UIPageControl!

元の間隔を維持する場合。

override func viewDidLayoutSubviews() {
        pageControl.transform = CGAffineTransform(scaleX: 2, y: 2)
}

元の間隔を維持したくない場合。

override func viewDidLayoutSubviews() {
        pageControl.subviews.forEach {
            $0.transform = CGAffineTransform(scaleX: 2, y: 2)
        }
}
0
Akbar Khan