2017-02-24 88 views

回答

18

縮放頁面控件將縮放點,但也會縮放它們之間的間距。

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

+0

這是一個很好的答案,但是我怎樣才能在UIPageViewController中獲得UIPageControl的引用。就像我打印UIPageViewController的子視圖一樣,我只能看到ScrollView!或者我需要在故事板中拖動一個UIPageControl? –

+0

你有沒有解決這個問題?我對如何引用pageControl有同樣的困惑。我在UIPageViewController中以某種方式做這件事嗎?我只想要更大的點,並縮放它們之間的距離也很好。 –

3

您可以使用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/

+0

我在我使用UIPageViewController的問題已經提到。 –

+0

@AnuragSharma我知道,UIPageControl與UIPageViewController一起使用時,我們想要更多的控制點。這不是不相容的。沒有辦法只用UIPageViewController來執行你想要的操作 – Makaille

+0

你是絕對正確的,但是我們可以在「viewDidLayoutSubviews()」中獲得「UIPageControl」的引用並根據我們的需要進行修改。我們可以改變點之間的空間看看@Ashley Mills回答 –

0

首先,內部創建一個uiPageControl對象內viewDidLoad中(),然後設置它的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