9

ビューコントローラーに多くのコンポーネントがあり、それらを単一のオブジェクトに結合して一緒にスクロールしたいのですが、それを行う手順は何ですか(Androidのlinearlayoutなど)が、IOSで必要です。

4

8 に答える 8

1

レイアウトマネージャー

まず第一に、探しているのはレイアウト用の宣言型 API です。他の言語/プラットフォームから来た多くの人がそれを見逃していると思います. iOS には、レイアウトの制約や自動サイズ変更などの他のアプローチがあります。ただし、これはすべてのユースケースに適合するわけではありません。

レイアウト ライブラリ

CocoaPodsに存在するいくつかのライブラリを調べることをお勧めします。インストールと開始が簡単です。非常に簡単な CSLinearLayoutView について言及したいと思います。私でさえ、CocoaPods からも利用できる小さなプロジェクトMKLayoutLibraryメンテナーです。これは、線形、スタック、および単純なフロー レイアウトも提供する、より圧縮性の高いものです。

クリーン ソリューション

ただし、レイアウトのトピックに深く入り込みたい場合は、UICollectionView とそのレイアウトのカスタマイズ機能を試してみることをお勧めします。

宣言型ソリューションは、膨大な量のアイテムやエンドレス スクロール レイアウトでは機能しないことを考慮してください。そうしたい場合は、UICollectionView カスタム レイアウトをさらに調べてください。

于 2014-06-05T19:29:50.273 に答える
1

Github からチェックアウトできる AutoLinearLayoutView というウィジェットを作成しました。

自動レイアウトに完全に基づいており、iOS 7+をサポートしています。あなたの要件に応じて、サンプル プロジェクトは、リニア レイアウト ビューによってラップされた多数のウィジェットと、UIScrollView に配置されたリニア レイアウト ビューを完全に示しています。

于 2016-04-27T15:16:29.417 に答える
1

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];
于 2013-10-01T02:00:55.063 に答える
1

Android のリニア レイアウト = iOS のスタック ビュー

アンドロイド:

orientation: Horizontal, Vertical

iOS:

Horizontal Stack View, Vertical Stack View in iOS

もっと:

Recycler View in Android = Table View in iOS
于 2019-12-02T07:36:37.997 に答える
0

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

于 2013-05-13T15:01:35.687 に答える
0

iOS で利用できるそのようなレイアウトはありません。ビューに追加する各コンポーネントは、そのフレームに基づいて表示されます (連続した方法ではありません)。

このようなことを行うには、UIScrollViewを使用できます。

このチュートリアルを確認してくださいUIScrollViewの使用方法

于 2013-05-13T12:46:56.500 に答える
-2

ios の uiview としてのすべてのコンポーネント。すべてのコンポーネントを UIView のように配置できます

[containerView addSubView:YourComponent1];
[containerView addSubView:YourComponent2];
[containerView addSubView:YourComponent3];

次に、これをあなたのUIScrollView

于 2013-05-13T12:45:12.867 に答える