Tim*_*the 7 iphone layout uikit
如何安排一些可变长度的UILabel和/或UIButton?我只想将它们添加到UITableViewCell中,它们应该以从左到右的方式排列,就像段落中的文本行一样.
我只发现使用"initWithFrame:..."创建具有固定大小和位置的标签的可能性.就我所知,Interface Builder似乎也是如此.无论是在代码中还是使用自定义单元格XIB文件,任何解决方案都会受到赞赏.
UITableViewCell、UILabel、 和UIButton都是 的子类UIView,其文档UIView说明:
布局和子视图管理
- 一个视图可以包含零个或多个子视图。
- 每个视图都定义了与其父视图相关的默认大小调整行为。
- 视图可以根据需要手动更改其子视图的大小和位置。
所以,这当然是可以做到的。
initWithFrame:您可以使用参数创建标签和按钮,然后使用或CGRectZero调整它们的大小(基于文本或其他内容)(因为现在您只需设置视图的大小)。然后,将这些视图添加为单元格的子视图。setBounds:setFrame:contentView
然后,在您的自定义子类中,UITableViewCell您可以通过覆盖默认行为(不执行任何操作)来layoutSubviews:设置子视图框架的原始字段(即 CGRect)来实现您的解决方案,该字段将在单元格的内容视图中定位子视图(大小)已经设定了)。您可能需要致电setNeedsLayout:或layoutIfNeeded:。
这实际上是如何实现解决方案的粗略概述,因为遗漏了很多细节。例如,如果您根据 的文本调整按钮的大小,titleLabel您可能需要将一些内容填充到宽度和高度,否则按钮将是标签的大小并且看起来很奇怪。在该layoutSubviews:方法中,可能有相当多的逻辑来按照您想要的方式布局标签和按钮(例如,如果单元格的所有子视图都具有相同类型(例如所有标签),则会更简单)。子视图是否可以换行。
| 归档时间: |
|
| 查看次数: |
1072 次 |
| 最近记录: |