3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CGRectを中心とサイズ指定で簡単に生成できるようにする

Last updated at Posted at 2021-11-06

##やりたいこと

Viewの配置場所指定などで頻繁に使用する、おなじみのCGRect。

CGRectの生成方法は

CGRect(origin: CGPoint, size: CGSize)

 または

CGRect(x: CGFloat, y: CGFloat, width: CGFloat, height: CGFloat)

という感じで、
 四角形の左上の座標指定 + 幅・高さ指定
で生成します。

なのですが、実際には
中心の座標指定 + 幅・高さ指定
からCGRectを生成したいシーンはよくあるかと思います。

毎度毎度、これらの値からoriginを計算してCGRect生成するのはめんどくさいので、
 中心の座標 + 幅・高さ
で一発でCGRectを生成できるようにしてしまいたいですね。

##解決方法

CGRectを 中心座標 + サイズ の情報で生成でいるイニシャライザを、
CGRectのExtensionとして実装してしまえば良いです。

CGRectExtension.swift
import UIKit

extension CGRect {
    init(center: CGPoint, size: CGSize) {
        let originX = center.x - size.width / 2.0
        let originY = center.y - size.height / 2.0
        self.init(x: originX, y: originY, width: size.width, height: size.height)
    }
}

これで、中心座標とサイズから一発でCGRectを生成できます。
Playgroundで実行した結果が下記。

CGRectExtensionSample.png

##動作確認環境

Xcode: 13.1
iOS: 15.1
Swiftバージョン: Swift 5.5.1

以上

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?