我正在尝试构建一个可以添加到多个视图的自定义,可重用的UIScrollView。滚动视图将成为一个重量选择器。对于我的生活,我找不到一个体面的例子来说明如何整洁或干净地实现这一点。
我希望有人能够指出我现有的图书馆或教程,告诉我如何做到这一点。我已经破解了一些例子,但到目前为止,没有什么是非常好或可重复使用的。请帮忙!!
对于它的价值,我有一个个人为重量打勾的图像。所以我可以选择数字的十分之一(例如160.4)。图像的第一个刻度为粗体,大于剩余的9个。我希望权重/数字以大刻度为中心。滚动停止后,我会将点更新为我的标签/数据源。
更新 我需要做到这一点。我有自定义字体,背景和自动收报机图像。
答案 0 :(得分:2)
我不会通过UIScrollView
执行此操作。我认为它会更复杂,当你尝试将自定义选择器添加到另一个滚动视图时,你肯定会遇到问题。
我要做的是:
通过一系列CALayers构建选择器视图,每个CALayers代表选择器视图的“构建块”;见附图:
每个构建块通过混合UILabel(文本)和图像来表示特定值;
使用平移手势识别器,或者定义touchesBegin/Moved/Ended
方法来处理平移;
完成平移后,您可以根据平移向左或向右移动视图内容;
平移时,您还可以在选择器的左端或右端添加新的构建块,以计算在第4点完成的位移所显示的空白区域。
我认为查看另一种自定义控件源代码对您有很大帮助。您可能无法找到已经实施的自定义选择器,但可以获得一些指导。看看cocoa controls。
希望这有帮助。
答案 1 :(得分:1)
如果我要实现这个,我会创建一个非常宽的图像,它有我需要的所有重量 - 我可能会在应用程序启动时在代码中创建它。然后,此图像将用作选择器的contentView。您可以“免费”获得所有滚动功能,甚至可以在滚动(或拖动)期间更新视图其他部分中显示的值。
scrollView只是带有刻度线和重量数字的区域,位于背景上方的子视图中,但位于显示实际重量的居中垂直线下方。
编辑:第二个想法,忘了图像。如果您有绘制图像的代码,则可以在自定义UIView中进行绘制。所以你得到了draw rect,你知道contentOffset,所以你可以得到你需要的东西。