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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

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

Swift

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

Q&A

解決済

2回答

2716閲覧

iosでの画面レイアウト作成

sena14

総合スコア109

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

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

Swift

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

0グッド

0クリップ

投稿2018/06/23 06:23

iosのアプリ開発の勉強をしていてオートレイアウトのところでつまづいてしまっています。

画面の端から絶対値で表示したり、中央揃えにしたりなどの制約をつけるなどは理解できたのですが、画面の大きさに対して要素の大きさも変更する方法が分かりません。

Buttonの大きさなどはスッキリしていないのですが、画面をViewで縦に三等分しさらに一番下のViewを横に三等分しその真ん中のViewに対してButtonを表示させるといった方法で実現させています。
しかしButtonが大きくなっても中の文字列が元の大きさのままになってしまうので文字の大きさも変動するようにしたいのですがそのやり方がわからず困っています。
調べてみた結果storyboardで出来る?というサイトやコードで変更するしかないといったサイト、そもそもxibで作ってないとないとコードからの変更は出来ないといったサイトなど色々ありどれが正しい情報なのかわからずにいます。

1、文字の大きさの対応について教えて頂きたいです。storyboard内で完結させられる方法があるのであればそれを教えていただけるのがありがたいです。
2、もしButtonそのものについてもスッキリ制約がつけられる方法があれば教えて頂きたいです。

よろしくお願いします。

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

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

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

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

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

fuzzball

2018/06/25 01:40

画面の大きさというのは、端末による大きさの違いでしょうか?それとも、ボタンが乗っているViewのサイズが変わるということでしょうか?
sena14

2018/06/26 23:25

端末による大きさの違いです
guest

回答2

0

ベストアンサー

1. フォントの大きさ

フォント設定の左側に小さな+があると思うので、それを押してWidth:Regular, Height:Regularを追加します。これがiPadでのフォントになります。

仕組みについては、traitとかsize class(以前の呼び方。こっちの方が情報多いかも)で調べて下さい。
(例えば Xcode8でSizeクラスの設定方法が変わったので早速試してみた

2. 画面の大きさに合わせて幅を変更

Button.width = Superview.width * 1/3でいいんじゃないかと。

  • superviewに対してwidthの制約を付ける
  • Constantは0、Multiplierを1:3にする

Multiplierは倍率です。小数指定(0.333)やパーセント指定(33.333%)も出来ます。

投稿2018/06/27 00:14

編集2018/06/27 00:15
fuzzball

総合スコア16731

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

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

sena14

2018/06/27 03:17

ありがとうございます。 無事実装できそうです。
guest

0

1に関して回答します
対象のUIbuttonがbuttonアウトレットに接続されているとします。

Swift

1@IBOutlet weak var button: UIButton! { 2 didSet { 3 button.titleLabel?.font = UIFont.systemFont(ofSize: 96) 4 button.titleLabel?.adjustsFontSizeToFitWidth = true 5 } 6 }

フォントサイズの96を上限にボタンの大きさに合わせて自動的にフォントの大きさが調整されます。
96でより大きくなる可能性があればその分この数値は大きくしても良いでしょう。
このfontサイズに関してはStoryBoardからも設定可能です。
adjustsFontSizeToFitWidthに関してはコードから設定するしかないかな?

もちろんIBOutletへのプロパティオブザーバではなく、viewDidLoad等で設定しても良いでしょう。
button.titleLabel?というプロパティはUILabelなのでadjustsFontSizeToFitWidth以外の項目も必要であれば設定できます。

投稿2018/06/26 03:10

516k

総合スコア189

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

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

sena14

2018/06/26 23:27

その方法だと文字が小さくなっていきますが、文字が小さくなり始める前にボタンいっぱいになってから小さくなり始めますよね? ボタンの中の余白も維持したいです。
516k

2018/06/27 00:20

余白とはどのような定義ですか? ポイント数ですか?それともボタンサイズ全体や表示中の文字列の材にに対してのの割合ですか? 具体的な要件は質問に明記した方がいいのではないでしょうか。
sena14

2018/06/27 03:18

ボタンの大きさと文字の大きさの割合の維持という意味合いでした。 今回はfuzzballさんの回答で先に進めそうなのでこれで解決とさせて頂きました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問