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.
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}
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!
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))
Swift 3:
let someRect: CGRect(x: 0, y: 0, width: 10, height: 10)
let midX = someRect.midX
let midY = someRect.midY
Essaye ça :-
var midY = self.view.frame.height / 2
var midX = self.view.frame.width / 2
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