質問: Swiftで、以下の画像のようにbutton1からの相対距離でbutton2を配置したいです。 sizeやx座標は変更せずに、y座標だけ変更したいと考えています。 constraintなどは使用せずに、コードで「button1から10の距離」や「button1から100の距離」など、可変にできるようにしたいと考えています。 ![画像の説明をここに入力](https://i.stack.imgur.com/1bpEP.jpg) UIButtonやUILabelにorigin.yやheightなど色々パラメーターがありどこを調整したら良いかわからなかったため どのようにコードを書いたら良いかご教授ください。
回答: > > UIButtonやUILabelにorigin.yやheightなど色々パラメーターがあり > > > Swiftの用語とすれば、「パラメーター」でなくて、プロパティになります。そして、`UIButton`、`UILabel`の座標情報は、親クラスの`UIView`のプロパティとして定義されています。 class UIView `UIView`の座標情報を扱うプロパティは、`frame`、`bounds`そして`center`があります。`frame`と`bounds`の違いについては、ここでは割愛します。今回使うのは、`frame`です。そして、`center`は、`UIView`オブジェクトの中心の位置座標(`CGPoint`)です。 frame プロパティ`frame`の型は、`CGRect`で、矩形の座標情報を持ちます。ここで、しっかり`CGRect`のリファレンスまで調べてください。どんどん穴を掘るように下に潜っていくのが、リファレンスを調べる基本です。 CGRect `CGRect`は、二つのメンバー(プロパティ)、`origin: CGPoint`、`size: CGSize`から成り立っています。`origin`は位置座標、すなわち(`UIKit`の場合)Viewの左上端の座標を表し、`size`は、大きさ(高さと幅)を表します。 ここまで調べれば、「`UIButton`や`UILabel`」は、`UIView`に置き換えられ、「`origin.y`や`height`など」は、それぞれ`.frame.origin.y`、`.frame.size.height`に置き換えられることがわかると思います。 `UIView`のプロパティ`frame`は、`{get set}`すなわち値の取得だけでなく、値のセット(変更)もできます。以上の情報を知ることができれば、質問者さんの意図、目的を実現することは、難しくないでしょう。