float:留在objective-c

问题描述:

我想让一堆按钮的行为有点像float:left在CSS中。 因此,无论何时视图改变大小,例如在方向改变时,按钮都应该调整,以便它们适合其容器视图。float:留在objective-c

在横向模式下,这个UIScrollView应该水平滚动,纵向模式下,它应该垂直滚动。

我试图在iPad YouTube应用中制作类似于“精选”标签的ScrollView。横向有4列,纵向:3列,“订阅”标签,纵向,同一视图有2列。

alt text

+2

+1对于一个深思熟虑和提出的问题。我只对不起,我无法回答。 – Abizern 2011-01-10 17:10:41

+0

从我+1以及:) – Moszi 2011-01-10 23:31:08

我实现了一个layout system做这样的事情。有一个演示项目,介绍如何使用它检入该存储库。我很乐意回答有关它的任何问题。这比AQGridView轻得多,所以如果你不需要他提供的额外功能,我会推荐一种类似于我的方法。

你可能想看看AQGridView,这基本上是一个重新实现Cocoa的NSCollectionView的:https://github.com/AlanQuatermain/AQGridView

否则,您可能需要重写你的parentView layoutSubviews,然后重新排列子视图(按钮),因此当父视图的尺寸发生变化时。

干杯,

约翰内斯

如果你不得不(通过重载layoutSubviews)手动实现这一点,我认为该算法是这样的:

  1. 开始与X = 0,Y = 0(假设翻转坐标)
  2. 对于每个按钮:
    1. 如果(X +按钮宽度)>容器的宽度,设置X = 0,增加的Y(X,Y)
    2. 增加X通过按钮的
    3. 地点按钮宽度