ContentFitScrollView
自调整的滚动视图,可以按比例减少提供的高度约束常数,以在不滚动的情况下适应屏幕上的所有内容。它考虑到ContentFitLayoutConstraint
的minimumHeight
值。如果不能在不滚动的情况下适应屏幕上的内容,将仅允许滚动。
ContentFitScrollView
允许您针对高分辨率屏幕排版内容,并确保在低分辨率屏幕上没有足够空间时,内容是可滚动的。
示例
要运行示例项目,请先克隆仓库,然后从Example目录中运行pod install
。
演示
关于iPhone屏幕 - https://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions
假设设计师完成了他的工作,并提供了1242x2208的图像。我随后竭尽全力使其与原始图像相匹配。所以7 Plus的图像是理想的。现在让我们看看我的界面在其他设备上的样子。
ContentFitScrollView
无7 Plus | 6s | 5s |
---|---|---|
![]() |
![]() |
![]() |
毫无疑问,这个布局除了在顶级设备上(iPhone 6+、6s+、7+)之外的所有设备上看起来都很糟糕。我的目标是把所有东西都放在屏幕上,但是使用简单的布局我失败了。当然,我可以用约束来将标签居中,并按容器视图的中心布局它们...但计算所有这些乘数很头疼,特别是当新的设计到来时还需要重新计算。现在试着想象,这样的布局不会这么简单...唉...
ContentFitScrollView
有7 Plus | 6s | 5s |
---|---|---|
![]() |
![]() |
![]() |
这一点好多了!ContentFitScrollView
会尝试减少标签之间的可用空间,使之全部适应屏幕。如果它无法适应屏幕,则屏幕将可滚动,因此最坏的情况下会回退到 UIScrollView 的方式。
ContentFitScrollView
加上 APExtensions
7 Plus | 6s | 5s |
---|---|---|
![]() |
![]() |
![]() |
我正在使用来自 APExtensions/Storyboard 的 UILabel+Storyboard
扩展来使标签适应屏幕大小。
这一解决方案几乎可以保证我的屏幕永远不会可滚动,所有元素都将适应屏幕。但对我来说,对于某些布局,我可能还是更倾向于第二种方法。这取决于你决定哪种更适合你的需求。
安装
Carthage
如果你在 Storyboard 中设置了 ContentFitScrollView
类,确保模块字段也是 ContentFitScrollView
请参阅官方指南
Cartfile
github "APUtils/ContentFitScrollView"
CocoaPods
ContentFitScrollView 可以通过CocoaPods获得。要安装它,只需将以下行添加到您的 Podfile
pod 'ContentFitScrollView'
使用方法
只需将 ContentFitScrollView
类设置为 storyboard 中的 UIScrollView(通常是基容器),确保模块字段也为 ContentFitScrollView
并为要调整大小的屏幕约束添加约束
您可以为这些约束设置 ContentFitLayoutConstraint
类,以便指定最小高度。
查看示例项目以获取更多详细信息。
贡献
任何贡献都备受欢迎!您可以通过 GitHub 上的 pull requests 和 issues 进行贡献。
作者
Anton Plebanovich, [email protected]
许可证
ContentFitScrollView 在 MIT 许可下提供。有关更多信息,请查看 LICENSE 文件。