获取自定义UIView子类以跟随UIControl

时间:2011-12-01 14:47:36

标签: iphone objective-c ios uiview uicontrol

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

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

4 个答案:

答案 0 :(得分:1)

听起来你的UIControl应该只是:

  • 足够高,可以包含条形图和气泡视图
  • 透明(这样您就可以在视图中看到气泡“滑动”的部分后面)

或者我错过了什么?

答案 1 :(得分:1)

首先,请确保UISlider中的continuous property设置为TRUE。

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

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

我希望这些信息可以帮助你!

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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