Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone Cocoa Touch:如何进行布局_Iphone_Objective C_Cocoa Touch - Fatal编程技术网

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工作。问题是当内容是动态的时,什么是最好的方法。