2015-11-16 15 views
8

Sto cercando di ottenere il centro della mia vista utilizzando il codice sottostante, la classe utilizzata è da DTIActivityIndicatorView che aggiunge un indicatore di attività personalizzato alla vista.Come ottenere il centro della vista

var midX = CGRectGetMidX(self.view.bounds) 
var midY = CGRectGetMidY(self.view.bounds) 

let topStoriesActivityIndicator: DTIActivityIndicatorView = DTIActivityIndicatorView(frame: CGRect(x: midX, y: midY, width:80.0, height:80.0)) 

Ma il codice riportato sopra mi dà il seguente risultato in cui l'indicatore di attività non è centrato nel mezzo.

screenshot

risposta

8

Swift 3

Il seguente codice indicano il centro dello schermo:

let frameSize: CGPoint = CGPoint(x: UIScreen.main.bounds.size.width*0.5,y: UIScreen.main.bounds.size.height*0.5) 

Speranza questo aiuto!

+3

UIScreen.main.bounds.midX e UIScreen.main.bounds.midY funzionano anche in swift 4 – uguboz

5

Bounds può essere diverso da come appare dimensioni della vista. Prova a usare frame e se non funziona prova a utilizzare i limiti.

var midX = CGRectGetMidX(self.view.bounds) 
var midY = CGRectGetMidY(self.view.bounds) 

Inoltre dal momento che si stanno posizionando la visualizzazione al centro e poi l'aggiunta di larghezza e altezza, appare fuori pure. È necessario impostare la cornice come questo

let topStoriesActivityIndicator: DTIActivityIndicatorView = DTIActivityIndicatorView(frame: CGRect(x: midX - 80.0, y: midY - 80.0, width:80.0, height:80.0)) 
+0

fatto e produce gli stessi identici risultati – Tunds

+0

Controllare la risposta aggiornato –

+0

'bounds' è la proprietà corretta da utilizzare qui; ottenere il MidX/Y del frame produrrà il risultato sbagliato se l'origine del frame è diversa da zero. –

1

Prova questo: -

var midY = self.view.frame.height/2 
var midX = self.view.frame.width/2 
2

Swift 3:

let someRect: CGRect(x: 0, y: 0, width: 10, height: 10) 
let midX = someRect.midX 
let midY = someRect.midY 
Problemi correlati