2015-11-16 24 views
8

Ich versuche, das Zentrum meiner Ansicht zu erhalten, indem Sie den unten stehenden Code verwenden, die verwendete Klasse ist DTIActivityIndicatorView, die einen benutzerdefinierten Aktivitätsindikator zur Ansicht hinzufügen.So erhalten Sie das Zentrum der Ansicht

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)) 

Aber der Code oben gibt mir das folgende Ergebnis, wo der Aktivitätsindikator nicht in der Mitte zentriert ist.

screenshot

Antwort

8

Swift 3

Der folgende Code repräsentieren die Mitte des Bildschirms:

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

Hoffnung diese Hilfe!

+3

UIScreen.main.bounds.midX und UIScreen.main.bounds.midY funktionieren auch in swift 4 – uguboz

5

Bounds können als unterschiedlich sein, wie Größe der Ansicht angezeigt wird. Versuchen Sie es mit einem Rahmen und wenn es nicht funktioniert, versuchen Sie es mit Grenzen.

Auch, da Sie Ihre Ansicht in der Mitte positionieren und dann Breite und Höhe hinzufügen, erscheint sie auch. Sie sollten den Rahmen wie dieser

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

das getan und es produziert genau die gleichen Ergebnisse – Tunds

+0

Überprüfen Sie die aktualisierte Antwort –

+0

'bounds' ist die richtige Eigenschaft verwenden hier zu werden; Wenn Sie den MidX/Y-Wert des Frames erhalten, wird das falsche Ergebnis angezeigt, wenn der Ursprung des Frames nicht Null ist. –

1

gesetzt Versuchen Sie diese: -

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 
Verwandte Themen