web-dev-qa-db-fra.com

Comment obtenir le centre de la vue

J'essaie d'obtenir le centre de ma vue en utilisant le code ci-dessous, la classe utilisée provient de la variable DTIActivityIndicatorView qui ajoute un indicateur d'activité personnalisé à la vue.

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

Mais le code ci-dessus me donne le résultat suivant où l'indicateur d'activité n'est pas centré au milieu.

screenshot

15
Tunds

Extension Swift 4:

extension CGRect {
    var center: CGPoint { return CGPoint(x: midX, y: midY) }
}

let someRect = CGRect(x: 10, y: 10, width: 200, height: 40)

let theCenter = someRect.center // {x 110 y 30}
10
JKvr

Swift 3

Le code suivant représente le centre de l'écran:

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

J'espère que cette aide!

10
Samir Thebti

Les limites peuvent être différentes de la taille de la vue. Essayez d'utiliser frame et si cela ne fonctionne pas, essayez d'utiliser des bornes.

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

De plus, puisque vous positionnez votre vue au centre, puis que vous ajoutez de la largeur et de la hauteur, elle apparaît également. Vous devriez définir le cadre comme ceci

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

Swift 3:

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

Essaye ça :-

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

Que dis-tu de ça?

let width = 80
let height = 80

laisser

topStoriesActivityIndicator: DTIActivityIndicatorView = DTIActivityIndicatorView(frame: CGRect(x: view.bounds.midX - ( width * 0.5), y: view.bounds.midY - ( height * 0.5) , width: width, height: height))

Cela peut peut-être aider à résoudre le problème

0
Regina