UIScrollView の使用方法を実験しています。苦労の末、やっとコツをつかめました。しかし今、私は別の障害にぶつかったようです。
この単純なアプリでは、スクロール ビューがあり、それを機能させるには、ここで説明されているようにビューの下部スペースを scrollview 制約に 0 に設定する必要があり、正常に動作します。私はIBを通してそれをやっています。
今、私はその部分をプログラムで実行しなければならないシナリオに出くわしました。メソッドに以下のコードを追加しましたviewDidLoad
。
NSLayoutConstraint *bottomSpaceConstraint = [NSLayoutConstraint constraintWithItem:self.view
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:self.scrollView
attribute:NSLayoutAttributeBottom
multiplier:1.0
constant:0.0];
[self.view addConstraint:bottomSpaceConstraint];
しかし、うまくいかないようです。コンソール ウィンドウに次のメッセージが出力され、どうすればよいかわかりません。
制約を同時に満たすことができません。おそらく、次のリストの制約の少なくとも 1 つが望ましくないものです。これを試してみてください: (1) 各制約を見て、どれが予期しないものかを把握してみてください。(2) 不要な制約を追加したコードを見つけて修正します。(注: 理解できない NSAutoresizingMaskLayoutConstraints が表示されている場合は、UIView プロパティ translatesAutoresizingMaskIntoConstraints のドキュメントを参照してください) ( "", "" )
誰かがこれを行う方法を教えてもらえますか? この問題についてよりよく理解できるように、ここにデモ プロジェクトも添付しました。
アップデート:
まず、応答に感謝します。回答に記載されている方法を使用して、機能させることができました。ただし、わずかに異なるシナリオではそうではありません。現在、プログラムでビューをビューコントローラーにロードしようとしています。
さらに説明することがあれば。2 つのビュー コントローラーがあります。最初のものは aUITableViewController
で、2 つ目は aUIViewController
です。その中にUIScrollView
. また、複数UIView
の があり、それらのビューの一部の高さが画面の通常の高さを超えています。
オプションのUITableViewController
リストが表示されます。ユーザーの選択に基づいてUIView
、ロットから特定の 1 つが にロードされUIViewController
ますUIScrollView
。
このシナリオでは、上記の方法は機能しません。スクロールは起きていません。ビューを個別にロードしているため、別のことをする必要がありますか?
デモ プロジェクトをここにアップロードして、動作を確認できるようにしました。を参照して、テーブル ビュー リストから[電子メール]Email.xib
を選択してください。