web-dev-qa-db-ja.com

ストーリーボードを使用したxcode 4.2のスクロールビュー内でのデザイン

私は垂直方向にスクロールするuiscrollviewを持っています-少し進んでスクロールビューを必要とするタブバーアプリの「このアプリについて」ページを想像してください。これには、いくつかの画像、ビデオ、およびテキストのみが含まれます(ビデオのみがコーディングされています。残りはGUIに配置されています)。ストーリーボード(Interface Builder?)Xcode 4.2では、すべてが適切に設定され、正常に機能しますが、ビューは画面に表示されているものと同じ大きさしかなく、ストーリーボードにあるアイテムを手動で配置することはできません最初はオフスクリーン-上にスクロールする必要があるか?これまでに見つけた唯一の方法は、表示されているビューでそれらをデザインしてから、矢印キーで下にナビゲートすることです。

27
John

あなたの痛みが分かります。私が見つけた唯一の方法は、サイズインスペクターで手動でスクロールビューをパンして、視覚的に編集するビューの部分を表示することです。

UIViewを使用して要素を含め、要素がこのビューに対して相対的に配置されるようにします。ビューをサブビューとしてスクロールビューの0,0に追加します。

  1. パン:Y座標を-200にして、内容を編集します。
  2. 非表示の部分にさらにコンテンツを配置するには、もう一度画面移動して新しい不動産を表示します
  3. 終了したら、ScrollViewの高さとX、Y位置の値を復元します。

スクロールビューフレームの長方形が、含まれているビューよりも小さいことを確認してください。

39
David

ストーリーボードでviewControllerを選択し、属性インスペクタで「サイズ」を「フリーフォーム」に変更します。次に、ビュー/スクロールビューの「高さ」を必要な大きさに変更します。 strutsとspringsのデフォルト設定では、アプリの実行時にビューのサイズを正しく変更する必要がありますが、再確認する必要があります。

51
agilityvision

新規:2013年3月26日

ストーリーボードで直接UIScrollViewを処理するためのさらに簡単な方法だと思いました。

  1. コードは必要ありません。ストーリーボードの設定だけです。これはおそらくiOS6.1/Xcode 4.6の新機能です
  2. 制約を無効にする必要はありません(つまり、ストーリーボードファイルのファイルインスペクターで[自動レイアウトを使用]をオフにします)
  3. UIScrollView * scrollViewを追加する必要はありません。 .h
  4. ViewWillAppearまたはviewDidLoadのオーバーライドでself.scrollView.contentSize = ...を追加する必要はありません

ここに私がやったことがあります(**で強調された重要な部分):( code を参照)

  1. ストーリーボードを有効にして新しいプロジェクトを作成する
  2. UIScrollViewにドロップし、ビューコントローラーのIDインスペクターにクラスを設定します
  3. 属性インスペクターで、シミュレートされたメトリックの下のサイズをフリーフォームに変更します**
  4. スクロールビューを選択します。属性インスペクタで、「スクロール可能」と「背景」を「白」に切り替えます(そうしないと、理由がわかります)。
  5. サイズインスペクター(スクロールビューを選択した状態)で、高さをたとえば900に変更します**
  6. ボタンを上に1つ、下部に1つ追加します
  7. 両方のボタンと単純にLog senderのbuttonTouchUpInsideのデフォルトハンドラーを追加します。

Code を参照してください。ViewControllerを選択し、ビューをスクロールしてインスペクターを確認します。

25
Dickey Singh

ビューコントローラーの[シミュレーションサイズ]をフリーフォームに変更し、通常のサイズよりも高い高さを設定するだけで、編集する必要があるすべてのアウトレットを確認できます。

11
TechSeeko

IOS 6.0では、コンテナービューをスクロールビュー内にドラッグできます。これにより、現在のシーンの外に、コンテンツの新しいビューが自動的に作成されます。その後、コンテンツに合わせて、必要に応じてこのビューのサイズを変更できます。

実行時にScrollViewコンテンツの高さを設定する必要があると思いますが、少なくともIBを上下にスクロールしなくても、コンテンツビューを一度にデザインできます。

4
Eneko Alonso

サイズを変更しようとしているビューから「サブビューの自動サイズ変更」のチェックを外すだけで、すべてのオブジェクトのサイズが変更されなくなります。

2
CDixon

私は現在iOS 7用のアプリを開発しており、@ Dickey Singhの回答とまったく同じように作成しましたが、最初は機能しません。ストーリーボードを確認したところ、scrollViewを保持するビューコントローラーの自動レイアウト制約も追加する必要があることがわかりました。このような自動レイアウト制約はXcode 5の前に自動的に追加されるようですが、今は自分で行う必要があります。制約を追加する方法:まず、ストーリーボードでビューコントローラーを選択します。トップメニューに「エディター」と入力します。 「自動レイアウトの問題を解決する」を選択します。 「不足している制約をコンテナに追加」を選択します。完了:-)

0
Kun Hu

私はしばらくこれに苦労してきました、そして私が試みたすべてのことは失敗しました。

具体的には、私が達成しようとしているのは、別のビューのコンテナーを含むスクロール可能なビューを持つフリーフォームサイズのモーダルダイアログです。時々正常に機能するなど、さまざまな結果が得られました。ほとんどの場合、正確に表示されますが、スクロールはありません。

最後にダウンロードされたDickey Singhのコードは完全に機能しましたが、特別なものは何もありませんでした。 (優れたクリーンソリューションBTW)。それで、コードにあったように、それにコンテナービューを追加しましたが、壊れました!

いくつかの実験の後、私は何が起こっているのかを考え出しました。我慢して。

1)自動レイアウトを使用すると、スクロールビューのサイズによって、スクロール境界がどのようになるかが決まります。 「USer Defined Runtime Attributes」で「contentSize」を設定してもこれには影響がないようで、「viewWillDisplay」または「viewDidLoad」で「contentSize」または「bounds」を設定することもできません。したがって、スクロールビューの初期サイズが800x800の場合、それが表示可能なすべてのスペースになります。このため、スクロール可能な領域が必要な場合は、コンテナービューを作成し、コンテンツ内にスクロールビューを配置します。

2)自動レイアウトを使用しない場合、「ユーザー定義のランタイム属性」で「contentSize」を設定すると、「viewDidLoad」でプログラムで設定する場合と同様に機能します。 「ユーザー定義ランタイム属性」を使用することをお勧めします。レイアウトでサイズが維持されるためです。このソリューションでは、スクロールビューを設計時に任意のサイズにすることができるため、より柔軟に使用できます。

3)自動レイアウトに関係なく、スクロール領域内のビューが水平または垂直フレーム境界のいずれかに完全に一致する場合、スクロールビューはスクロールビューとして機能しなくなります。これは、自分のコードと、私が試したすべての可能な構成でのDickey Singhのコードに適用されます。

何が原因かはわかりませんが(3)、明らかにバグです。

これがスクロールビューの使用に苦労しているすべての人の役に立つことを願っています。一部の人々が問題なくそれらを使用していることを想像し、一部の人々(私のように)はそれらに問題があるが、問題があったと思います。

0
Owen Godfrey

ストーリーボードの画面全体よりも大きいコンテンツのScrollViewを設計するための私のソリューションは次のとおりです(まあ、1行のコードを除いて:-):

https://stackoverflow.com/a/19476991/1869369

0
Ronny Webers