0

我正在尝试构建一个可以添加到多个视图的自定义、可重复使用的 UIScrollView。滚动视图将成为一个权重选择器。在我的一生中,我找不到一个像样的例子来说明如何整齐或干净地实现这一点。

我希望有人能将我指向一个现有的库或教程,向我展示如何做到这一点。我已经破解了几个例子,但到目前为止,没有什么是非常好的或可重用的。请帮忙!!

对于它的价值,我有一个图像,每个人都为重量打勾。所以我可以选择数字的十分之一(例如160.4)。该图像的第一个刻度粗体并且大于其余 9 个。我希望重量/数字位于大刻度的中心。滚动停止后,我会将这些点更新到我的标签/数据源。

更新 我需要做这个。我有自定义字体、背景和股票代码图像。

重量选择器

4

2 回答 2

2

我不会通过UIScrollView. 我认为它会更复杂,当您尝试将自定义选择器添加到另一个滚动视图时,您肯定会遇到问题。

我会做的是:

  1. 通过一系列 CALayers 构建选择器视图,每个 CALayer 代表选择器视图的“构建块”;见附图:

    在此处输入图像描述

  2. 每个构建块将通过混合 UILabel(文本)和图像来表示特定值;

  3. 使用平移手势识别器,或者定义touchesBegin/Moved/Ended方法来处理平移;

  4. 平移完成后,根据平移将视图内容向左或向右移动;

  5. 平移时,您还可以在选择器的左端或右端添加新的构建块,以解决将在第 4 点完成的位移显示的空白区域。

我认为看看另一种自定义控件的源代码会对你有很大的帮助。您可能不会发现您的自定义选择器已经实现,但可以获得一些指导。然后看看可可控件

希望这可以帮助。

于 2012-07-25T21:59:26.910 回答
1

如果我要实现这个,我会创建一个非常宽的图像,它具有我所需要的所有重量——我可能会在应用程序启动时在代码中创建它。然后将此图像用作选择器的 contentView。您可以“免费”获得所有滚动功能,甚至可以在滚动(或拖动)期间更新视图其他部分中显示的值。

scrollView 只是带有刻度线和重量数字的区域,位于背景上方的子视图中,但位于显示实际重量的居中垂直线下方。

编辑:再三考虑,忘记图像。如果您有绘制图像的代码,则可以在自定义 UIView 中进行绘制。所以你得到了draw rect,你知道contentOffset,所以你可以画出你需要的东西。

于 2012-07-25T22:07:00.293 回答