2017-02-24 2 views

Répondre

18

La mise à l'échelle de la commande de mise à l'échelle mettra à l'échelle les points, mais aussi l'espacement entre eux.

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

Si vous souhaitez conserver le même espacement entre les points, vous aurez besoin de transformer les points individuellement:

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

Cependant, si vous faites cela en viewDidLoad, la transformation a été remis à zéro par le temps de la vue apparaît, vous devez donc faire en viewDidLayoutSubviews ...

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

enter image description here

+0

C'est une bonne réponse, Mais comment puis-je obtenir la référence de UIPageControl dans UIPageViewController. Comme si j'imprime les sous-vues de UIPageViewController je reçois le ScrollView seulement! Ou dois-je faire glisser un UIPageControl dans le storyboard? –

+0

Avez-vous déjà résolu ceci? J'ai la même confusion sur la façon de référencer le pageControl. Est-ce que je fais ça en quelque sorte dans le UIPageViewController? Tout ce que je veux, c'est de plus gros points, et la mise à l'échelle de la distance entre eux est bien aussi. –

3

Vous pouvez utiliser un UIPageControl et l'échelle comme ceci:

@IBOutlet weak var pageControl: UIPageControl! 

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

Le problème avec cela est que l'espace entre vos points augmentera aussi. Si vous voulez avoir une conception précise avec votre point, vous devez utiliser des contrôles à 3 parties: https://www.cocoacontrols.com/

+0

Je l'ai mentionné dans la question que je me sers UIPageViewController . –

+0

@AnuragSharma Je sais, UIPageControl est utilisé avec UIPageViewController quand on veut plus de contrôle sur les points. Ce n'est pas incompatible. Il n'y a aucun moyen de faire ce que vous voulez seulement avec UIPageViewController – Makaille

+0

Vous avez absolument raison, mais nous pouvons obtenir la référence de "UIPageControl" dans "viewDidLayoutSubviews()" et modifier selon nos besoins. Nous pouvons changer l'espace entre les points jeter un oeil à @Ashley Mills répondre –

0

Tout d'abord, créez un objet uiPageControl à l'intérieur à l'intérieur viewDidLoad(), puis réglez sa position y selon vos besoins puis appliquer l'échelle désirée à l'aide CAAffiniteTransform comme ci-dessous:

 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