首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何以流布局的方式排列标签?

如何以流布局的方式排列标签?
EN

Stack Overflow用户
提问于 2010-06-02 00:35:39
回答 4查看 1.1K关注 0票数 7

如何排列可变长度的UILabels和/或UIButtons?我只想将它们添加到UITableViewCell中,它们应该从左到右排列,就像段落中的文本行一样。

我只找到了使用"initWithFrame:...“创建具有固定大小和位置的标签的可能性。据我所知,Interface Builder似乎也是如此。任何解决方案都是值得欣赏的,无论它是在代码中完成的,还是使用自定义单元XIB-file完成的。

EN

回答 4

Stack Overflow用户

发布于 2011-01-01 12:51:21

UITableViewCellUILabelUIButton都是UIView的子类,UIView的文档说:

布局和子视图管理

  • 视图可以包含零个或多个subviews.
  • Each视图,并定义其相对于父视图的默认调整大小行为。
  • 视图可以根据需要手动更改其子视图的大小和位置。

所以,这当然是可以做到的。

您可以使用带有参数CGRectZeroinitWithFrame:创建标签和按钮,然后使用setBounds:setFrame:调整它们的大小(基于文本或其他内容)(因为现在您只需设置视图的大小)。然后,将这些视图添加为单元格contentView的子视图。

然后,在UITableViewCell的自定义子类中,您可以通过覆盖layoutSubviews:的默认行为(什么也不做)来实现您的解决方案,以设置子视图框架(即,CGRect)的原始域,该原始域将在单元格的内容视图中定位子视图(已经设置了大小)。您可能需要调用setNeedsLayout:layoutIfNeeded:

这实际上是一个如何实现解决方案的粗略轮廓,因为有很多细节被遗漏了。例如,如果您根据titleLabel的文本来调整按钮的大小,您可能希望填充一些到标签的宽度和高度,否则按钮将与标签的大小相同,看起来会很奇怪。在layoutSubviews:方法中,可以有相当多的逻辑来按照你想要的方式布局标签和按钮(例如,如果一个单元格的所有子视图都是同一类型的,比如所有的标签),那么它会更简单。如果子视图可以换行。

票数 1
EN

Stack Overflow用户

发布于 2011-04-08 00:01:54

对于多行UILabels,要获得宽度和高度,应该使用NSString方法sizeWithFont:constrainedToSize:lineBreakMode:然后可以使用获得的大小将所有内容放置在需要的位置。

票数 1
EN

Stack Overflow用户

发布于 2011-01-08 21:30:10

我想做同样的事情,允许用户在文本字段中输入标签-有点像您输入电子邮件地址时,地址会转换为蓝色标签(当该用户的电子邮件地址已经在您的联系人列表中时,在中的用户名)。我还没有写出来,但我会很乐意在写完后与你分享。不幸的是,我不能承诺我要花多长时间来写这篇文章。然而,如果没有其他人可以分享代码,而你需要快速完成工作-只是作为一个提示,请考虑以下内容:

创建标记视图对象,其中每个对象都知道父文本域/标记容器视图的大小,并且每个标记对象都有一个实用方法,另一个标记对象可以使用该方法将自身插入到正确的位置。这种方法使得使用简单的迭代流来管理视图和重新布局标记变得很容易。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2951572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档