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

前端之家收集整理的这篇文章主要介绍了ios – 如何在Swift中设置自定义视图的内在内容大小?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
背景

我正在制作一个垂直的标签,用于传统的蒙古语脚本.在我刚刚旋转UILabel之前,但是有一些性能问题和其他并发症.现在我正在从头开始制作标签.然而,当我的高度调整(基于字符串长度)时,我需要垂直标签来告诉自动布局.

我读过的

我读了Intrinsic Content SizeViews with Intrinsic Content Size文档.这些更多关于如何使用它,而不是如何在自定义视图中定义它.

搜索“ios内部内容大小为自定义视图”只给我

> Proper usage of intrinsicContentSize and sizeThatFits: on UIView Subclass with autolayout

堆栈溢出.这个特定的问题甚至不需要内在的内容大小,因为他们的观点只是一个标准视图的集合.

我在想什么

我正在尝试的是我的答案.我添加了这个Q& A对,所以它不会让别人找到答案,因为我使用我使用的搜索关键字.

解决方法

设置自定义视图的固有内容大小可让自动布局知道该视图的大小.为了设置它,你需要重写intrinsicContentSize.
override var intrinsicContentSize: CGSize {
   return CGSize(width: x,height: y)
}

然后打电话

invalidateIntrinsicContentSize()

每当您的自定义视图的内在内容大小发生变化并且框架应更新时.

笔记

> Swift 3更新:Easier Auto Layout: Coding Constraints in iOS 9
>阅读Writing a Custom Control for iOS 8 using Swift and Auto Layout,了解如何在上下文中正确完成.
>只是因为你的自定义视图中设置的内在内容大小并不意味着它会按照你的期望工作.阅读the documentation如何使用它,特别注意Content-Hugging and Compression-Resistance.
还感谢Q& A把我放在正确的轨道上:How can I add padding to the intrinsic content size of UILabel?
感谢this articledocumentation帮助invalidateIntrinsicContentSize().

猜你在找的iOS相关文章