2013-05-13 5 views
7

私のビューコントローラには多くのコンポーネントがありますが、それらを1つのオブジェクトにまとめてスクロールするための手順は何ですか(アンドロイドの線形レイアウトなど)。私はIOSでそれが必要です。iosの線形レイアウトと似ているもの

答えて

-1

すべてのコンポーネントはiosでの表示となります。あなたは、あなたがiOS版で利用できるようなレイアウトはありません、あなたのUIScrollView

+0

でも、このコンポーネントの1つは、その高さが動的でUIScrollViewよりも大きいテキストビューです。この場合、私は何をしますか? – CarinaM

+0

UIScrollViewのコンテンツサイズは、水平方向と垂直方向の両方で動的に拡張できます。 textViewもscrollviewのサブクラスです。あなたはいくつかのチュートリアルのリンクを持っているいくつかのscrollviewのチュートリアルを見てください –

+0

?はい、必要なのは、コンテンツサイズを動的に拡張することです。 – CarinaM

0

にこれを追加することができます

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

ようにUIViewのにすべてのコンポーネントを置くことができます。ビューに追加する各コンポーネントは、そのフレームに基づいて表示されます(逐次的な方法ではありません)。

UIScrollViewです。このチュートリアルHow to use UIScrollView

0

あなたはおそらくiOSのと、もう少しマニュアルに何かを行う必要があるでしょう

チェック。すべてのビューをUIScrollViewに追加することはできますが、UIScrollViewのcontentSizeを適切に設定する必要があります。基本的に、N個のアイテムについて、スクロールビューの幅は次のようになります。

scrollView.contentSize = CGSizeMake(N * itemWidth + (N - 1) * itemPadding, itemHeight); 

その後、あなたはそのx座標が適切であるので、各UIViewのフレームを設定する必要があり、かつ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をご覧ください。

1

アップル

使用例を線形コンテナ を提供していますが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]; 
1

LayoutManagerのすべての

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

レイアウトライブラリ

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

クリーンソリューションしかし

、あなたは本当に私がUICollectionViewとそのレイアウトのカスタマイズの可能性で遊んでお勧めレイア​​ウトの話題に非常に深く行きたい場合。

膨大な量のアイテムや無限のスクロールレイアウトでは、宣言的な解決策が機能しないと考えてください。そうしたい場合は、UICollectionView custom layoutsをさらに調べてください。

8

iOS9はのLinearLayoutに似たものを導入しました:UiStackView

がWWDC 2015からこのビデオを参照してください:https://developer.apple.com/videos/wwdc/2015/?id=218

+6

最後に... :)しかし、Androidとは異なり、Appleの新しいUI要素は下位互換性がありません。つまり、UIStackViewはiOS 9 +でのみ利用可能です。... –

+3

UiStackViewは貧しい人のLinearLayoutであり、正直に言えば、太さや余白などを設定できません。 – fhucho

0

私はちょうどchecked out from GithubすることができAutoLinearLayoutViewと呼ばれるウィジェットを書きました。

これは完全に自動レイアウトとサポートに基づいていますiOS 7+。要件に応じて、この例のプロジェクトでは、十数種のウィジェットが線形レイアウトビューでラップされ、線形レイアウトビューはUIScrollViewに配置されています。