iOS 多级选择器框架封装
2024-02-24 13:13:19
iOS 多级选择框架封装与项目中的隐形杀手
时光荏苒,转眼间又是一个六月。经过一段时间的沉淀,我决定继续更新我的技术博客,这次的主題是關於 iOS 多级选择框架的封装,以及我在项目中遇到的几个匪夷所思的坑。
多级选择框架封装
我在项目中需要一个多级的选择器,要求具备自适应滚动、自定义字体大小和下划线宽度的功能。经过一番调研,我决定封装一个自己的选择框架,以满足需求。
首先,我创建了一个 UIView 子类,并将其设计为多级选择器的容器视图。容器视图包含一个 UIScrollView 和一个 UIStackView,用于排列选项。UIScrollView 实现了自适应滚动功能,可以根据选项的數量自动调整高度。
接下来,我为每个选项创建了一个自定义视图,它包含一个 UILabel 和一个 UIView。UILabel 用于显示选项文本,而 UIView 用于绘制下划线。通过设置 UILabel 的字体大小和 UIView 的宽度,我可以动态调整选项的字体大小和下划线宽度。
为了实现多级选择,我使用了嵌套 UIStackView。当点击一级选项时,我会关闭二级选项并刷新数据。通过使用闭包和委托,我可以将选定的选项返回给调用方。
项目中的隐形杀手
在项目集成过程中,我遇到了几个意想不到的坑:
-
莫名其妙的崩溃: 当选项较多时,选择器会莫名其妙地崩溃。经过一番调试,我发现这是由于 UIStackView 在计算高度时出现了一个浮点精度错误造成的。为了解决这个问题,我将 UIStackView 的 arrangedSubviews 属性强制转换为 [UIView] 数组,并手动计算高度。
-
字体大小闪烁: 当动态调整字体大小时,会出现短暂的字体闪烁。这是由于 UILabel 在调整字体大小时会重新布局,导致容器视图的高度发生变化。为了解决这个问题,我使用了 UIView 的 layoutIfNeeded 方法,只在需要时才重新布局。
-
下划线错位: 在某些情况下,下划线会与选项文本错位。这是由于 UILabel 的文本基线与 UIView 的顶部之间存在一个偏移。为了解决这个问题,我调整了 UILabel 的文本内边距,使其与 UIView 的顶部对齐。
总结
通过封装一个多级选择框架,我解决了项目中的一个实际问题。在解决项目的过程中,我遇到了几个棘手的坑,但通过仔细分析和调试,我最终找到了解决方案。希望这篇文章能帮助其他开发者在使用多级选择器时避免类似的错误。
如果你有兴趣了解更多的细节,欢迎查看我的 GitHub 仓库,其中包含了框架的完整代码和使用指南:
[Github仓库链接]
让我们一起探索 iOS 开发的更多奥秘!