メインのiPhoneビューの外側にUI要素を持つインターフェイスビルダーにUiscrollviewを設定する方法は?
-
27-09-2019 - |
質問
iPhoneアプリにデータ入力フォームを構築していますが、画面に収まるよりも多くのデータフィールドがあります。ユーザーがフォームをスクロールできるように、それらをuiscrollviewに入れるべきだと思いました。インターフェイスビルダーでこれを構築する最良の方法は何ですか?プログラムでできることは知っていますが、できればインターフェイスビルダーでやりたいと思います。問題は、 uIlabels、uitextfieldsなどをレイアウトするにはどうすればよいですか。メインのiPhone画面の外側にある場合、Uiscrollviewが役立つ画面の部分では?
解決
ダブルクリックして開きます UIScrollView
それ自体はIBで、必要なサイズまたは大きいサイズにサイズを増やします(実行時にいつでも縮小できます)。次に、要素を追加します。
編集:機能しません - 参照してください ここ 代わりは。
他のヒント
この問題で見つけた最高の回避策(インターフェイスビルダーにとって恥ずかしいと思います)は次のとおりです。
- uiscrollview内に「コンテナ」uiviewを配置し、コンテナのサイズを検査官と一緒に必要なもの(320 x 1200)に設定し、そのコンテナビュー内にコンテンツを追加します。 (ボタン、テキストフィールドなど)。
- コードでは、uiscrollviewのコンテンツを設定します。コンテナuiviewのサイズと同じになります。たとえば、viewdidloadのどこか(例:scrollview.contentsize = containerview.frame.size;)
- インターフェイスビルダーのScrollViewの境界を越えてコンテンツを変更するには、毎回スクロールビューの外側にコンテナビューをドラッグし、変更を加えてから、コンテナビューをUiscrollview内でドラッグしてビルドする必要があります。
これは実際には簡単です:
新しいView ControllerクラスなどのMyScrollViewControllerを作成します
最上部ビューとしてuiscrollviewを使用して新しいxibを作成し、ファイルの所有者のクラスをmyscrollviewコントローラーに設定します
ファイルの所有者のビュー属性をスクロールビューに設定します
ScrollViewの下部をドラッグして、目的のサイズを作成します。
スクロールビューのサブビューとして他のさまざまなUI要素を配置する
スクロールビューの場合、myscrollviewcontroller.hのiboutletを作成して接続します。
@property (retain, nonatomic) IBOutlet UIScrollView *scrollView;
MyScrollViewControllerのViewDidLoadメソッドで、次のコード行を追加します。
self.scrollView.contentSize = self.scrollView.frame.size;
それはすべての人々です!
「サイズインスペクター」に「スクロールビューサイズ」の「コンテンツインセット」を設定します。これにより、uiscrollviewのトップからトップ、ボトムからボトムの範囲でスクロールすることができます
私も同じ問題を抱えていました。私がやったことは、別のuiviewをその中に入れて、私が望むものに高さを設定することでした。次に、すべてのUI要素をその中に入れます。これにより、内側のビューを上下にドラッグできます。
Xcode5で私にとってうまくいったのは、「Autolayoutを使用するストーリーボードなし)です。 2つのステップを追加します。
8)新しいuiviewをインターフェイスビルダーにドラッグします。スクロールビューには入りません。それだけで。すべてのコントロール/ビューをその中に入れて、あなたが望むだけ大きくします。このビューをContentViewとして接続しました。
@property(弱い、非原子)iboutlet uiview *contentView;
9)in -(void)viewdidload
self.mainscrollview addsubview:self.contentview]; [self.mainscrollview setContentsize:cgsizemake(self.contentview.frame.size.width、self.contentview.frame.size.height)];
それが私のためにそれを機能させたと言っているだけです。
最終的にこれらすべてに賢明な解決策があり、それはuiscrollviewの内側にコンテナビューを配置することです。 Interface Builderがコンテナビュー内にuiviewcontrollerを個別に表示すると、最終的に、uiscrollviewコンテンツが指を交差させて頭の上に立っていないように見えるものを見ることができます。
コンテンツのサイズをプログラム的に設定する必要がありますが、少なくともこれで何が起こっているかを視覚化できます。