创建可嵌入另一个视图的UIScrollView

时间:2012-07-25 21:18:12

标签: iphone ios uiscrollview scroll uipickerview

我正在尝试构建一个可以添加到多个视图的自定义,可重用的UIScrollView。滚动视图将成为一个重量选择器。对于我的生活,我找不到一个体面的例子来说明如何整洁或干净地实现这一点。

我希望有人能够指出我现有的图书馆或教程,告诉我如何做到这一点。我已经破解了一些例子,但到目前为止,没有什么是非常好或可重复使用的。请帮忙!!

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

更新 我需要做到这一点。我有自定义字体,背景和自动收报机图像。

weight picker

2 个答案:

答案 0 :(得分:2)

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

我要做的是:

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

    enter image description here

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

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

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

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

  6. 我认为查看另一种自定义控件源代码对您有很大帮助。您可能无法找到已经实施的自定义选择器,但可以获得一些指导。看看cocoa controls

    希望这有帮助。

答案 1 :(得分:1)

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

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

编辑:第二个想法,忘了图像。如果您有绘制图像的代码,则可以在自定义UIView中进行绘制。所以你得到了draw rect,你知道contentOffset,所以你可以得到你需要的东西。