我不确定是否“布局管理器”是正确的术语,但我正在寻找一种方法让UIViews流入他们的父视图,就像左浮动的div在HTML页面中一样。有没有一种简单的方法来做到这一点,无论是通过iPhone的API或外部?iPhone - UIViews的布局管理器?
回答
我不知道一个API来做到这一点。 Mac上的核心动画有一些布局的东西,但我认为它不包含在iPhone中。
虽然你所描述的听起来并不难。开源吗? :-)
是的!我一般是太马虎了/懒惰/自私的我的任何开放源代码的意图去任何地方。但是,也许这将是不同的:) – morgancodes 2010-02-04 21:56:55
没有什么像这样真正构建到sdk中,但它不应该太难以得到你以后的行为。只需致电
NSArray *subs = [parentView subviews];
获取所有已存在的子视图。通过他们环路这样
CGRect leftMostViewsFrame = nil;
for(UIView *cur in subs){
CGRect where = cur.frame;
//find the left most frame for a given X coord
}
,把你的新视图旁边
newView.frame = CGRectMake(leftMostViewsFrame.origin.x + leftMostViewsFrame.size.width,
[parentView addSubview:newView];
......
可以远不止于此干净写它,有一个你需要做更多的检查和推理来获得float的所有行为,但这是我将采取的基本方法。我不知道是否有可以使用或不使用的第三方库。
感谢乔,我会继续前进,做到这一点。 – morgancodes 2010-02-04 22:23:18
@morgancodes我写了一个完整的解决方案基于这样的回答:http://stackoverflow.com/a/11379438/974531 – 2012-07-08 08:56:32
经过一番搜索,我发现这个:http://code.google.com/p/layoutmanagers/ 上次开发是在2009年12月,但乍一看,它似乎仍然可以适用于当前版本的iOS。
我创建的上述的在GitHub上叉:https://github.com/RefuX/LayoutManagers-Fork并添加了GridLayout。我在iPhone和iPad用户界面上使用过它。对于iOS 4和5.我喜欢它:) – RefuX 2012-01-27 19:51:38
这里的(基于the answer by Joe Cannatti)的完整解决方案:
添加
UIView
你的故事板,并在一些名字,例如,它链接到您的ViewController
container
。 (如果你的容器视图是全视图,您可以用self.view
而不是container
你ViewController.m
内。)创建并添加UI元素到
container
。例如,您可以创建并添加UILabel
到container
有:UILabel* label = [[UILabel alloc] init]; label.text = @"Foo"; [label sizeToFit]; [container addSubview:label];
起初,每当你添加/删除/修改UI元素/从/内
container
,你可以他们重新安排到流布局有:float x = 0, y = 0, width = container.frame.size.width, rowHeight = 0; for (UIView* view in container.subviews) { // only re-arrange user-added views (change condition as required) if (![view isKindOfClass:UILabel.class]) continue; float w = view.frame.size.width, h = view.frame.size.height; bool fitsInRow = x + w <= width; if (!fitsInRow) {x = 0; y += rowHeight; rowHeight = h;} view.frame = CGRectMake(x, y, w, h); x += w; rowHeight = MAX(rowHeight, h); } // if container is a UIScrollView, change content size container.contentSize = CGSizeMake(width, y + rowHeight);
- 1. Java布局管理器
- 2. 布局管理器Qt中
- 3. Java GUI布局管理器
- 4. PHP布局管理器
- 5. JavaScript/Backbone.js布局管理器
- 6. Java布局管理器
- 7. 设置布局管理器
- 8. jQuery布局管理器
- 9. 带布局管理器的PaintComponent
- 10. RecyclerView的自定义布局管理器
- 11. 布局管理器取消的jlable
- 12. Flash中的布局管理器?
- 13. Java中的多个布局管理器
- 14. 布局管理器的使用
- 15. iPhone OS上是否存在约束布局管理器?
- 16. Miglayout或替代布局管理器
- 17. RecyclerView没有布局管理器
- 18. 摆动:列流布局管理器?
- 19. 选择一个布局管理器
- 20. Java布局管理器建议
- 21. RecyclerView布局管理器操纵
- 22. 自定义布局管理器
- 23. 取消滚动布局管理器
- 24. Java布局管理器垂直中心
- 25. 选择布局管理器 - Java
- 26. JPanel和Java布局管理器
- 27. Android自定义布局管理器 - 儿童布局
- 28. asp.net布局管理器或布局控件
- 29. 哪个布局管理器可以在Java中进行布局?
- 30. 如何动态布局UIViewController的UIViews
只是在想同样的事情。如果您真的不想使用InterfaceBuilder,但也不想处理手动定位所有事情的复杂性,那么像Java Swing中的LayoutManagers集合将会非常有用。 – ra9r 2010-05-12 16:41:39
如果您只想显示内容,那么只有webkit视图。我一直在搞嵌入HTML的很好的布局信息屏幕的东西。 – morgancodes 2010-05-14 16:27:34
这在iOS 5或更早版本中并不存在。关于iOS 6的信息,请咨询您的NDA保护的文档,这是我们不能公开讨论在这里。 – 2012-07-07 23:57:03