如何获得视图的中心

Tun*_*nds 16 uiviewcontroller uiview swift

我试图通过使用下面的代码获得我的视图的中心,正在使用的类是从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))
Run Code Online (Sandbox Code Playgroud)

但上面的代码给出了以下结果,其中活动指标不在中间.

截图

小智 13

斯威夫特3

以下代码代表Screen的中心:

let frameSize: CGPoint = CGPoint(x: UIScreen.main.bounds.size.width*0.5,y: UIScreen.main.bounds.size.height*0.5)
Run Code Online (Sandbox Code Playgroud)

希望这有帮助!

  • UIScreen.main.bounds.midX和UIScreen.main.bounds.midY也适用于swift 4 (3认同)
  • 请注意, UIScreen.main 不是“视图”中心,而是整个屏幕“中心”。 (2认同)

JKv*_*Kvr 11

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}
Run Code Online (Sandbox Code Playgroud)


Sai*_*ira 10

边界可能与视图大小的显示方式不同.尝试使用框架,如果它不起作用尝试使用边界.

var midX = CGRectGetMidX(self.view.bounds)
var midY = CGRectGetMidY(self.view.bounds)
Run Code Online (Sandbox Code Playgroud)

此外,由于您将视图定位在中心,然后添加宽度和高度,它也会显示为关闭.你应该像这样设置框架

let topStoriesActivityIndicator: DTIActivityIndicatorView = DTIActivityIndicatorView(frame: CGRect(x: midX - 80.0, y: midY - 80.0, width:80.0, height:80.0))
Run Code Online (Sandbox Code Playgroud)


Jak*_*kub 7

斯威夫特3:

let someRect: CGRect(x: 0, y: 0, width: 10, height: 10)
let midX = someRect.midX
let midY = someRect.midY
Run Code Online (Sandbox Code Playgroud)