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