是否有可能制作UILabel,UITextView或类似的东西,它总是调整其高度以适应其在Interface Builder中的内容而不截断?

时间:2017-01-13 06:32:16

标签: ios swift xcode interface-builder uilabel

我有xib我用于表格单元格(变量高度,在垂直UITableView中),每个单元格都填充了具有图像和可变长度的数据文本,但可能有不同的行数。我已经尝试将它们包装在horizontal UIStackView中,但我发现没有文本视图可以调整其容器的大小以适应可变的多行。

UILabelUITextView在Interface Builder中看似任意地截断它们的内容,而调整图像的高度使得UIStackView容器相应地增长和缩小以包装其内容。

是否有任何视图或方法可以添加自定义视图,根据文本长度动态调整其高度,而不会截断?

1 个答案:

答案 0 :(得分:1)

我认为这就是你想要的:)

enter image description here

有很多关于如何实现它的教程:)无论如何,lemme解释这里的步骤,希望它有所帮助:)

提示

利用tableView的estimatedRowHeight并将其设置为UITableViewAutomaticDimension,让UITableView为你做神奇的事情:)

第1步:

创建单元格xib或在UITableViewController上创建原型单元格。无论你感觉舒服。创建一个单元格xib,iOS希望你在ViewDidLoad()中注册带有可重用标识符的xib我打算避免它,因此在UITableViewController中创建一个原型单元格:)让它为它提供一个可重用的标识符:)

enter image description here

第2步:

拖动UIImageView和UITextView并应用约束,如图所示:) 这个答案假设你的imageView高度是固定的:)如果它没有调整答案一点:))

enter image description here

现在imageView有H:| - (8) - [ImageView] - (8) - |和V:| - (8) - [ImageView] 最后高度限制为100:)

现在在它下面添加TextView:)

enter image description here

TextView没有高度限制:)它只有顶部,左下和右下约束:)

第3步:

enter image description here

现在选择textView,并小心取消选中启用滚动,显示水平和垂直指示符:)

第4步:

在tableViewController的viewDidLoad或你的viewController中写:)

self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = 44.0;

第5步:

现在坐下来,放松,运行代码,激动,请回来接受答案:)

修改

如果想知道我可能在UITableViewController中写了什么:)只是tableView数据源方法numberOfSectionsnumberOfRowsInSectioncellForRowAt就是这样。没有其他要求:)