web-dev-qa-db-ja.com

ビューの中心を取得する方法

以下のコードを使用してビューの中心を取得しようとしています。使用されるクラスは、ビューにカスタムアクティビティインジケーターを追加する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

16
Tunds

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}
11
JKvr

Swift

次のコードは、画面の中心を表しています。

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

この助けを願っています!

12
Samir Thebti

境界は、ビューのサイズの表示とは異なる場合があります。フレームを使用してみて、うまくいかない場合は境界を使用してみてください。

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))
9
Said Sikira

スウィフト3:

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

これを試して :-

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

これはどう?

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

これは問題の解決に役立つ場合があります

0
Regina