1

我有一个 UIControl 的子类,它代表一个滑块开关,带有一个变量“百分比”,它存储滑块的当前位置,即 0.0 表示滑块在左侧,1.0 表示滑块在右侧。我有两张看起来像气泡的图像,当用户单击滑块时,我想显示其中一张图像(它们的大小相同但看起来不同,设计为如果百分比 <= 0.5 则显示一张,如果百分比 <= 0.5 则显示另一张百分比 > 0.5)并让对话气泡的“尾部”跟随滑块(即框架设置为百分比的函数)。

我为图像创建了一个自定义 UIView,它通过布尔参数更改要显示的图像。我尝试在 UIControl 子类中创建一个参数,该参数将 UIView 与所有其他绘图一起绘制,但我需要将它绘制在 UIControl 的矩形之外,这不能从 UIControl 的 drawRect: 方法内部完成。当 UIControl 的百分比值发生变化时,管理这两个视图并确保对话气泡始终更新的好方法是什么?

4

4 回答 4

1

感谢您的回答 - 事实证明,最好的方法是为我的自定义 UIControl 声明一个委托协议,并将语音气泡视图分配为委托。然后我创建了一个方法,告诉对话气泡更新位置(传递位置),并在控件位置更新时从 UIControl 调用它。

于 2011-12-01T17:54:36.887 回答
1

听起来您的 UIControl 应该只是:

  • 高到足以容纳条形图和气泡图
  • 透明(以便您可以看到气泡“滑动”的视图部分的后面)

还是我错过了什么?

于 2011-12-01T14:52:33.747 回答
1

首先,确保在 UISlider 中将 continuous属性设置为 TRUE。

然后,确保你有一个 IBAction 来接收来自你的 UISlider 的更新事件。您可以在 Interface Builder(内置于 XCode 4)中轻松建立连接,也可以使用 UIControl 的addTarget:action:forControlEvents:方法以编程方式进行连接。

最后,在该 IBAction 中,您现在可以更改“语音气泡”UIView 的框架(确保将其链接到您的父视图控制器作为 @interface .h 文件中的成员)。它相对于滑块的显示位置留给您作为家庭作业(因为它实际上是特定于实现的——或者,换句话说,它的显示方式取决于每个单独的应用程序和程序员)。

我希望这些信息对您有所帮助!

于 2011-12-01T14:56:02.617 回答
0

可能更简单的方法是向 UIControl 添加指向 UIView 的属性,并在更改控件状态的方法中移动它。当然,要做到这一点,您需要创建一个像 MyCustomControl 这样扩展 UIControl 的类。

于 2011-12-01T14:56:31.337 回答