Как получить центр обзора

Я пытаюсь получить центр своего представления, используя приведенный ниже код, причем класс используется из DTIActivityIndicatorView, который добавляет в представление настраиваемого индикатора активности.

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

Но приведенный выше код дает мне следующий результат, когда индикатор активности не центрирован в середине.

screenshot

Ответ 1

Расширение 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}

Ответ 2

Swift 3

Следующий код представляет центр экрана:

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

Надеюсь на эту помощь!

Ответ 3

Границы могут отличаться от того, как выглядит размер представления. Попробуйте использовать фрейм, и если он не работает, попробуйте использовать границы.

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

Кроме того, поскольку вы позиционируете свой вид в центре, а затем добавляете ширину и высоту, он также отображается. Вы должны установить фрейм как это

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

Ответ 4

Swift 3:

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

Ответ 5

Попробуйте следующее: -

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

Ответ 6

Как насчет этого?

let width = 80
let height = 80

позволять

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

Это может помочь решить проблему