🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
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

1回答

434閲覧

UIScrollViewの制約について

ruuuu

総合スコア176

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クリップ

投稿2020/01/01 12:08

UIScrollViewに関して、学習をしていたのですが、分からない部分があり質問させて頂きました。
分からない部分と言いますのは、リンク先記事の以下の部分になります。

例えばSVのbottomの位置をみるとcontentsViewから152下がった位置で制約がかかっています。上下左右ともSVとcontentsViewの位置はガチガチに制約がかかっている状態です。この状態ではスクロールはできません。

まず、そもそも分からない部分なのですが、「制約」とはどういった意味なのでしょうか?
「152下がった位置で制約がかかっている」これが何故スクロールできない原因なのかが分かりません。
どなたか、ご助言頂けましたら幸いです。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

「制約」についてだけ解説しておきます.

iOS の UI を担当するフレームワーク「UIKit」では, AutoLayout という仕組みを使って UI の配置を決定します.
その AutoLayout の用語として「制約」というものがあります.
なので意味というか「制約」という用語だと考えてください.
日本語だと却って紛らわしいのであれば, 英語で「constraint」と覚えておくのも良いでしょう. (プログラム側で制約にアクセスする場合などは constraint ですし)

AutoLayout, 及び制約について詳細に解説すると, それだけで結構な情報量になるので割愛しますが, 大まかな話をすると 1 つの制約は

「a = b × C + D」

という式で表せます.
例えば「◯◯ボタンの上端の位置 = 親ビューの上端の位置 × 1 + 44pt」などです.
(実際には × 1 は同じなので省略しますが)

AutoLayout は沢山の「制約という名前の方程式」を並べ, それらがすべて成立するように UI を配置するのです.

で, UIScrollView の制約についてですが, 実は UIScrollView は AutoLayout の中でも制約式の表す意味が分かりづらいことでも有名です...
その記事も, UIScrollView の制約について迷う人が多いからこそ書かれたものと推察します.
自分もあんまり自信ないので, よく言われる

「UIScrollView 直下には UIView を 1 つだけ配置し, 上下左右に 0pt の制約をつける」
https://qiita.com/malt/items/6468921e57a30594d037

で逃げてるクチだったりします.

投稿2020/01/02 04:25

編集2020/01/02 04:28
kagilinn

総合スコア354

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

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

ruuuu

2020/01/02 05:38

ご回答ありがとうございます。 「制約」というのはAutolayoutの用語であり、式で表すことができるのですね。 ただいま、autolayoutを調べているのですが、正直な所訳が分からない状態でございます... 一度ここは飛ばすのが懸命な気がしてまいりました...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問