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

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

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

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

Swift

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

Q&A

解決済

1回答

5668閲覧

画面サイズに応じて拡大縮小する方法について

kappaTKO

総合スコア37

Xcode

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

Swift

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

0グッド

0クリップ

投稿2019/07/23 06:00

編集2019/07/25 02:33

メニューが画面を作成しています。
イメージ説明

ベースは、iPad Pro (12.9-inch)で配置しました。
親View「UIView:灰色」
子View「UILabel:黒色」「UIButton:青色」

このメニュー画面をiPhoneの画面にも縮小して表示させたいと思っています。

設定したことは、
親View のConstraints 上下左右を「0」にして表示させています。

分からないことは、
子View にどのように制約を設定するかです。
ラベルとボタンを選択して上下左右の制約と「Equal Widths」「Equal Heights」にチェックを入力しましたが、iPhone XR の画面では縮小されないまま表示されます。
イメージ説明

画面サイズに応じて拡大縮小する方法を教えてください。
よろしくお願いいたします。

修正箇所です。
親Viewの設定はそのままです。
ラベルの制約をつけました。
イメージ説明

スタッフボタンを配置して親Viewの幅50%にした時にエラーが発生します。
イメージ説明

イメージ説明
上記のエラーはそのままにして、次の設定を行うのでしょうか?
試しに「Add Missing Constraints」を選んで設定を続けてみました。

メニューラベルに対して30ptの設定をつけるとありますが、どのにつけるのでしょうか?
イメージ説明
イメージ説明
利用者ボタンを配置した後に左右下の制約はどこに設定するのでしょうか?
イメージ説明

「Mutiplier」の設定
親Viewの幅と高さのサイズによるラベルの制約をつけました。

イメージ説明
イメージ説明

ラベルの状態の確認画像です。
イメージ説明
イメージ説明
イメージ説明
イメージ説明

iPhoneでのラベルの向きが変わりません。
イメージ説明
イメージ説明

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

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

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

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

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

fuzzball

2019/07/24 00:55 編集

ラベルとボタンを選択してEqual WidthsとEqual Heightsにチェックするというのは、「ラベルとボタンの幅と高さが同じ」という制約でしかなく、実際のサイズをどうするかという制約ではありませんので、画面サイズが変わっても何も影響しません。 例えば、上記の状態に「ラベルの幅 = 親Viewの幅 * 0.3」という制約を追加すると、ラベルとボタンの幅が親Viewの幅の30%になりますので、画面サイズが変わるとボタンとラベルのサイズも変化するようになります。
kappaTKO

2019/07/24 10:00

「ラベルの幅 = 親Viewの幅 * 0.3」という制約はどこで設定するのでしょうか? 親Viewのサイズを「Width:1366」「Height:980」、ボタンのサイズを「Width:500」「Height:100」で配置した場合は、Equal Widths などを設定するAdd New Constraints の画面にある「Width」に「500」と「Height」に「100」と設定するのでしょうか。?
fuzzball

2019/07/24 12:02

「ラベルの幅 = 親Viewの幅」の制約を付けてMultiplierを0.3にします。
kappaTKO

2019/07/25 01:08

ボタンの配置をなくしてラベルだけで試しています。 ラベル(W500,H100)を上と左に「20」と制約をつけて、「ラベルの幅 = 親View * 0.3」と「ラベルの高さ = 親View * 0.1」に制約をつけました。 画面サイズを変更してもラベルのサイズが変わりません。 位置の制約と親Viewの設定が何か違うのでしょうか?
fuzzball

2019/07/25 01:13 編集

W500,H100は制約ですか?もしそうなら削除して下さい。競合してしまうので。(制約のエラー出てませんか?)
kappaTKO

2019/07/25 01:16

ラベルの幅と高さには制約をつけていません。 ラベルの制約の画像を質問の方にあげてみたのですが、エラーは出ていません。
fuzzball

2019/07/25 01:20

>>画面サイズを変更してもラベルのサイズが変わりません というのは、Storyboard上での確認でしょうか? 黄色いエラー(Misplaced Views)が出ているときは表示を更新して下さい。 (Update Framesボタンを押す、もしくは "option" + "command" + "=" です)
kappaTKO

2019/07/25 01:49

storybord上でもbuildしてもラベルのサイズが変わりません。 iphoneの方は、横向きにもラベルが反転していません。 Update Framesボタンは色が反転して押せない状態になっています。 画像を質問の方にあげました。
fuzzball

2019/07/25 01:57

そもそもiPadのときに制約通りに表示されてないですよね‥。 今は親ビューとラベルだけで、制約は、 ・親ビューは画面一杯 ・ラベルは画像の通り だけですかね?
kappaTKO

2019/07/25 02:03

そうですね。iPhoneの方ばかり気になっていました。iPadも制約通りになっていませんね。 制約は親ビューが画面一杯とラベルの制約だけです。 もう一度ラベルを作成し直してみます。
fuzzball

2019/07/25 02:08

親ビューの制約も怪しいです。XRのStoryboardの画像で、親ビューが左右のセーフエリアに被ってます。
kappaTKO

2019/07/25 02:37

ラベルを作成し直すと親ビューのサイズでラベルのサイズが変わるようになりました。 ラベルを作成した時の幅と高さを親ビューと同じにして制約をつけました。 今度はラベルとボタンを配置してみます。 もう一つ期になることがあります。iPhoneで縦横の向きを変えてもラベルの向きが変わりません。iPadの方はラベルの向きが変わるのですが、何か設定があるのでしょうか?
fuzzball

2019/07/25 02:40

回転がロックされているとか?(端末の設定)
kappaTKO

2019/07/25 03:29

Device Orientation の Portrait のチェックを外すと向きが変わりました。 レベルとボタンのサイズを画面サイズによって変更することができました。 ありがとうございました。
guest

回答1

0

ベストアンサー

親ビューの制約は間違ってないです。
まずはラベルの制約をつけます。例で上と左に60ptずつつけました。

メニューラベルの制約

次に UIButton を配置して親ビューと同じwidthにします。
(ボタンを選択してControlキーを押しながら親ビューに繋いでEqual Widthsを選択)
その後下記のように制約を選択して親ビューに対して半分のwidthになるように
Multiplierを 1/2 に変更します。これでスタッフボタンの幅が親ビューの50%になります。

UIButtonのwidthを半分に

最後にメニューラベルに対してここでは30ptの制約をつけました。
他は左と下は0ptにしました。(右側の制約はまだ考えなくていいです)

UIButtonの上左下の制約

さらに UIButton を追加して 追加したボタンを選択し,
Command ボタンを押しながらスタッフボタンも同時に選択状態にして
Top の制約を合わせます。

利用者ボタンのトップの制約を合わせる

これが終われば,左右下の制約を0ptでつけます。
スタッフボタンの幅が親ビューの半分なので自動的に利用者ボタンの幅も親ビューの半分になります。

利用者ボタンの残りの制約

iPhone XR などで見てみても同じような見え方になります。
ただフォントサイズ固定ですと見た目がよくないので,画面幅によってフォントサイズを調整したり Dynamic Typeを用いるなどの対策は必要かと思います。

iPhoenXRでも同じ見え方

ちょっと高度にはなりますが UIStackView を使う手もありますので
気になったら調べてみてください。

もしボタンの大きさがこんなに大きくない場合(質問からはわからなかった)は
親ビューに UIView を同じように新規追加して半分半分の領域を作ってから
追加した UIView に対してそれぞれ UIButton を追加して制約つけてみてください。

投稿2019/07/23 19:44

TakuyaAso

総合スコア1361

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問