繁体   English   中英

获取自定义UIView子类以遵循UIControl

[英]Get a custom UIView subclass to follow a UIControl around

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

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

听起来像你的UIControl应该只是:

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

或者我错过了什么?

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM