微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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().

原文地址:https://www.jb51.cc/iOS/336318.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐