Iphone Cocoa Touch:如何进行布局
我有一个视图(Iphone Cocoa Touch:如何进行布局,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,我有一个视图(UIScrollView),它加载一些数据,并在不同的子视图中显示其中的各种内容。因此,我有大约10个子视图(UIImageView,UILabel),考虑到它们不可预测的内容(即,UILabel的不同高度/宽度取决于文本属性),我需要以编程方式放置它们 据我所知,Cocoa touch没有布局框架 最好的方法是什么 据我所知,我应该将内容放在视图中,然后在调用sizeToFit方法后开始根据它们的帧计算坐标 这种方法非常容易出错。真的没有其他方法吗?您可以使用Interface
UIScrollView
),它加载一些数据,并在不同的子视图中显示其中的各种内容。因此,我有大约10个子视图(UIImageView,UILabel
),考虑到它们不可预测的内容(即,UILabel
的不同高度/宽度取决于文本属性),我需要以编程方式放置它们
据我所知,Cocoa touch没有布局框架
最好的方法是什么
据我所知,我应该将内容放在视图中,然后在调用sizeToFit
方法后开始根据它们的帧计算坐标
这种方法非常容易出错。真的没有其他方法吗?您可以使用Interface Builder创建视图,然后将元素拖放到视图中。我不知道有任何自动布局管理器之类的工具 因此,我认为您必须计算所需的位置和大小,并手动更新子视图的
帧
编辑:我找到Brad Larson指向自定义布局管理器示例的地方。HTH你说得对,没有自动布局管理器。子类化UIScrollView
和重写layoutSubviews
可能是实现自定义算法的正确方法。然后,您可以调用setNeedsLayout
进行布局。Cocoa中的布局通常通过自动调整大小(使用自动调整大小任务
)来完成。从硬编码的初始大小开始,比如200x200;将子视图放置在此视图上,并相应地设置自动调整大小标志。然后,此视图可以自由调整大小,使其达到由其父视图/窗口确定的实际大小。无论您是使用Interface Builder还是以编程方式执行此操作,过程都是相同的
如果需要视图的垂直堆栈,可以使用表视图
如果您想要更复杂的布局,您需要自己实现它,通过覆盖layoutSubviews
尝试在回答之前阅读问题,是的,当我有静态内容时,IB工作。问题是当内容是动态的时,什么是最好的方法。