ios中线性布局的相似之处是什么?

时间:2013-05-13 12:40:31

标签: iphone ios android-linearlayout

我的视图控制器中有很多组件,我希望将它们组合在一个对象中以将它们一起滚动,执行它的过程是什么(如android中的linearlayout),但我需要在IOS中使用它。

8 个答案:

答案 0 :(得分:9)

iOS9引入了类似于LinearLayout的东西:UiStackView

观看来自WWDC 2015的视频:https://developer.apple.com/videos/wwdc/2015/?id=218

答案 1 :(得分: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];

答案 2 :(得分:1)

<强>的LayoutManager

首先,您正在寻找的是布局的声明式API。我猜很多来自其他语言/平台的人都错过了。 iOS只是有一些其他方法,如布局约束或自动调整。但是,这并不适合所有用例。

布局库

我建议您查看CocoaPods处存在的一些库。它易于安装和启动。 我想提一下CSLinearLayoutView非常简单。即使我是一个较小的项目MKLayoutLibrary的维护者,也可以通过CocoaPods获得。这是一种更具压缩性的,也提供线性,堆叠和简单的流动布局。

清洁解决方案

但是,如果您真的想深入了解布局主题,我建议您使用UICollectionView及其布局自定义功能。

考虑声明性解决方案不适用于大量项目或无休止的滚动布局。如果您想这样做,请进一步了解UICollectionView custom layouts

答案 3 :(得分:1)

我刚刚编写了一个名为AutoLinearLayoutView的小部件,它可以是checked out from Github

它完全基于自动布局和支持 iOS 7 + 。根据您的要求,示例项目完美地演示了十几个由线性布局视图包装的小部件,并且线性布局视图放置在UIScrollView中。

答案 4 :(得分:0)

iOS中没有此类布局。您在视图上添加的每个组件都将根据其框架显示(而不是按顺序方式)。

执行此操作时,您可以使用UIScrollView

查看本教程How to use UIScrollView

答案 5 :(得分: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

答案 6 :(得分:0)

Android中的线性布局= iOS中的堆栈视图

Android:

orientation: Horizontal, Vertical

iOS:

Horizontal Stack View, Vertical Stack View in iOS

更多:

Recycler View in Android = Table View in iOS

答案 7 :(得分:-2)

每个组件都是ios中的uiview。所以你可以将每个组件放入UIView中,如

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

然后您可以将其添加到UIScrollView