一尘不染

如何在Swift中设置自定义视图的固有内容大小?

swift

背景

我正在制作一个垂直标签,以与传统的蒙古文字一起使用。在我刚开始轮换使用之前,UILabel但存在一些性能问题和其他复杂性。现在,我正在从头开始制作标签。但是,我需要垂直标签来告诉自动布局何时调整其高度(基于字符串长度)。

我读过的

我阅读了“
固有内容大小”和“
具有固有内容大小的视图”文档。但是,这些更多是关于如何使用它的,而不是如何在自定义视图中定义它的。

搜索“用于自定义视图的ios内部内容大小”只会给我

在堆栈溢出中。这个特定问题甚至不需要内部内容大小,因为它们的视图只是标准视图的集合。

我在想什么

我正在尝试的是下面的答案。我添加了这个问答对,这样其他人就不会花很长时间就能找到答案,就像我使用搜索关键字所花的时间一样。


阅读 254

收藏
2020-07-07

共1个答案

一尘不染

设置自定义视图的固有内容大小可以使自动布局知道该视图的大小。为了进行设置,您需要覆盖intrinsicContentSize

override var intrinsicContentSize: CGSize {
   return CGSize(width: x, height: y)
}

然后打电话

invalidateIntrinsicContentSize()

每当您的自定义视图的固有内容大小发生更改并且应该更新框架时。

笔记

2020-07-07