使用自动布局的自定义/动态标签宽度

时间:2013-10-05 05:12:26

标签: ios width uilabel autolayout xcode5

我有一个表格单元格,我现在有一个UILabel说labelA,其高度是动态的,即基于内容。标签宽度为290px。我希望在labelA旁边添加另一个标签,其名称为labelB。表格单元格和labelA如下所示:enter image description here

问题1 - 这里的高度正在扩大,我有2行在这里显示整个文字。但看起来第1行和第2行的宽度与290相同。有没有办法可以阻止标签的宽度,我的文本结束,即在这种情况下,我的第一行标签的宽度应为290但是对于第2行它应该在最后一个作品“Paul”之后结束,以便我可以从那里开始我的下一个标签labelB?

问题2 - 另外,在创建xib时,我将两个标签放在同一行上。如果我在两个标签之间设置了约束,可以在标签A将标签B向下扩展到另一行时扩展吗?

我的单元格和标签最终应该如下所示,紫色背景的标签是labelA,矩形是橙色边框,里面是白色纯色,是labelB。

enter image description here

请告诉我这是否可行?我仍然是iOS和自动布局中的菜鸟。

1 个答案:

答案 0 :(得分:0)

要回答问题1 UILabel将始终将文字绘制到矩形框架中。你不能让一个UILabel以你想要的方式绘制两行文字。您可以使用两个UILabel s,每行一个,但是您必须进行一些手动计算以确定第一个标签中适合的文本数量,然后将“溢出”到第二个标签的文本(boundingRectWithSize:options:attributes:context:将成为你的朋友)。

要回答问题2 ,您应该将 labelB 的下边缘固定在 labelA 的下边缘。让每个标签的高度由内在内容大小决定。假设字体相同,这应该会产生您想要的结果。 (您也可以尝试对齐两个标签的基线,但我不记得多线标签的行为方式。)

顺便说一下,你应该研究iOS 7's Text Kit。我个人还没有机会深入探讨它,但它非常强大,你可能会找到一种更好的方式去做你在这之后的事情。