質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

602閲覧

各デバイスで綺麗な円にしたいのですが、記述方法がわかりません。

Harumaki_

総合スコア11

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2019/07/30 20:07

初心者です。綺麗な円となったラベルを表示させたいです。
下の画像の右部がストーリボードになり、実行させた画面が左部になります。実行時に綺麗な円にしたいです。
イメージ説明

あらゆるデバイスでも綺麗な円を実現するために、コード上でラベルの一辺の値を取得し、その半分の値を
layer.cornerRadiusに代入して、 円を実現させようと試みています。コードは以下になります。
※↓テキスト「C」が書かれているのは「Label」ですが「Cbutton」と名前付けしてます。ミスです。

Swift

1 2import UIKit 3 4class ViewController: UIViewController { 5 6 @IBOutlet weak var Cbutton: UIButton! 7 8 override func viewDidLoad() { 9 super.viewDidLoad() 10 // Do any additional setup after loading the view. 11 12 Cbutton.layer.cornerRadius = Cbutton.frame.width * 0.5 13 } 14} 15

ストーリボードではiphoneXsを基準に(?)作業しましたが、実行時はiphone7を選択しています。iphoneXsでの実行は綺麗になるのですが、その他の機種ではiphone7時同様にうまくいきません。
[疑問点1]
コードの「Cbutton.frame.width 」に原因があるのでしょうか?「Cbutton.frame.width」以外にも「Cbutton.bounds.size.width」「Cbutton.bounds.width」の二つを試みましたがうまくいきませんでした。

[疑問点2]
Constraintsの付け方がおかしいのでしょうか?ラベルの横幅がデバイスの横幅の半分の長さになるようにしています。そしてaspect = 1:1で縦横を整え、正方形にしています。以下の画像をご覧ください。

イメージ説明

以上、宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

viewDidLayoutSubviews()の中でcornerRadiusの設定を行って下さい。(viewDidLoad()では、まだ各UIのサイズが確定していません)

同じようなボタンが多いのであれば、カスタムクラスを作ることをおすすめします。

投稿2019/07/30 23:40

編集2019/07/30 23:43
fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問