ビューコントローラーに多くのコンポーネントがあり、それらを単一のオブジェクトに結合して一緒にスクロールしたいのですが、それを行う手順は何ですか(Androidのlinearlayoutなど)が、IOSで必要です。
8 に答える
レイアウトマネージャー
まず第一に、探しているのはレイアウト用の宣言型 API です。他の言語/プラットフォームから来た多くの人がそれを見逃していると思います. iOS には、レイアウトの制約や自動サイズ変更などの他のアプローチがあります。ただし、これはすべてのユースケースに適合するわけではありません。
レイアウト ライブラリ
CocoaPodsに存在するいくつかのライブラリを調べることをお勧めします。インストールと開始が簡単です。非常に簡単な CSLinearLayoutView について言及したいと思います。私でさえ、CocoaPods からも利用できる小さなプロジェクトMKLayoutLibraryのメンテナーです。これは、線形、スタック、および単純なフロー レイアウトも提供する、より圧縮性の高いものです。
クリーン ソリューション
ただし、レイアウトのトピックに深く入り込みたい場合は、UICollectionView とそのレイアウトのカスタマイズ機能を試してみることをお勧めします。
宣言型ソリューションは、膨大な量のアイテムやエンドレス スクロール レイアウトでは機能しないことを考慮してください。そうしたい場合は、UICollectionView カスタム レイアウトをさらに調べてください。
Github からチェックアウトできる AutoLinearLayoutView というウィジェットを作成しました。
自動レイアウトに完全に基づいており、iOS 7+をサポートしています。あなたの要件に応じて、サンプル プロジェクトは、リニア レイアウト ビューによってラップされた多数のウィジェットと、UIScrollView に配置されたリニア レイアウト ビューを完全に示しています。
Apple は線形コンテナを提供していませんが、github でXHFLinearViewを使用できます
使用例:
XHFLinearView *linearView=[[XHFLinearView alloc]initWithFrame:self.view.bounds];
[self.view addSubview:linearView];
//init linear view content views
[linearView.itemSource addObject:XHFLinearViewUnitMake(someView, XHFMarginMake(0, 0, 0, 0))];
//force layout linear view
[linearView needLayout];
//insert a view with animation
[linearView insertItem:someView margin:XHFMarginMake(0, 0, 0, 0) atIndex:0 withAnimation:XHFLinearItemAnimationFade];
//replace a view with animation
[linearView replaceItem:someView withNewItem:newView withAnimation:XHFLinearItemAnimationFade];
//resize a view with animation
someView.frame=xxx;
[linearView needLayoutForItem:someView];
//remove a view with animation
[linearView removeItemByIndex:0 withAnimation:XHFLinearItemAnimationFade];
Android のリニア レイアウト = iOS のスタック ビュー
アンドロイド:
orientation: Horizontal, Vertical
iOS:
Horizontal Stack View, Vertical Stack View in iOS
もっと:
Recycler View in Android = Table View in iOS
iOS では、もう少し手動で何かをする必要があるでしょう。すべてのビューを に追加できますが、UIScrollView の を適切UIScrollView
に設定する必要があります。contentSize
基本的に、N 個のアイテムの場合、スクロール ビューの幅は次のようになります。
scrollView.contentSize = CGSizeMake(N * itemWidth + (N - 1) * itemPadding, itemHeight);
UIView
次に、 x 座標が適切になるようにそれぞれのフレームを設定し、次のように追加する必要がありUIScrollView
ます。
for (int i = 0; i < views.count; i++) {
UIView *view = [views objectAtIndex:i];
view.frame = CGRectMake(i * itemWidth + i * itemPadding,
view.frame.origin.y,
view.frame.size.width,
view.frame.size.height);
[scrollView addSubview:view];
}
単純な線形レイアウトよりも複雑なものが必要な場合は、 をご覧くださいUICollectionView
。
iOS で利用できるそのようなレイアウトはありません。ビューに追加する各コンポーネントは、そのフレームに基づいて表示されます (連続した方法ではありません)。
このようなことを行うには、UIScrollViewを使用できます。
このチュートリアルを確認してくださいUIScrollViewの使用方法
ios の uiview としてのすべてのコンポーネント。すべてのコンポーネントを UIView のように配置できます
[containerView addSubView:YourComponent1];
[containerView addSubView:YourComponent2];
[containerView addSubView:YourComponent3];
次に、これをあなたのUIScrollView