ページコントロールを拡大縮小すると、ドットが拡大縮小されますが、ドット間の間隔も拡大縮小されます。
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)
}
}
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/
For Swift 2.0はpageControl Indicatorのサイズを増減するため)
self.pageControl.transform = CGAffineTransformMakeScale(0.8, 0.8)
OR
self.pageControl.transform = CGAffineTransformMakeScale(1.3, 1.3)
まず、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
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)
}
}