背景
我正在制作一个垂直的标签,用于传统的蒙古语脚本.在我刚刚旋转UILabel之前,但是有一些性能问题和其他并发症.现在我正在从头开始制作标签.然而,当我的高度调整(基于字符串长度)时,我需要垂直标签来告诉自动布局.
我读过的
我读了Intrinsic Content Size和Views with Intrinsic Content Size文档.这些更多关于如何使用它,而不是如何在自定义视图中定义它.
> Proper usage of intrinsicContentSize and sizeThatFits: on UIView Subclass with autolayout
堆栈溢出.这个特定的问题甚至不需要内在的内容大小,因为他们的观点只是一个标准视图的集合.
我在想什么
解决方法
设置自定义视图的固有内容大小可让自动布局知道该视图的大小.为了设置它,你需要重写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 article和documentation帮助invalidateIntrinsicContentSize().