UISlider
可以在 iPhone 中设置控件的最大值和最小值。因此滑块将工作 - 好的 - 好。
首先,我将举例说明我到底想要实现什么。
- 在 iPad 中默认带有日历应用程序。
- 打开日历,在底部 - 你可以看到日/周/月列表
- 当您在其上滑动手指时,您会在滑动时看到一个弹出菜单。
- 我想在滑块上实现相同的功能。
我正在努力,但是如果我能够获得 x 坐标,我可以轻松实现它。任何其他实现相同的建议都是最受欢迎的。
UISlider
可以在 iPhone 中设置控件的最大值和最小值。因此滑块将工作 - 好的 - 好。
首先,我将举例说明我到底想要实现什么。
我正在努力,但是如果我能够获得 x 坐标,我可以轻松实现它。任何其他实现相同的建议都是最受欢迎的。
从用于测试的 UILabel 开始(只需在其中写一些东西)并向其中添加 IBOulet 以及 UISlider。接下来,为滑块的“值已更改”添加一个 IBAction。
然后,您需要计算两个值来确定标签的放置位置——从左侧调整,以及滑块的每个值的像素。你@interface
可能看起来像这样:
@interface sliderViewController : UIViewController {
IBOutlet UISlider *slider;
IBOutlet UILabel *label;
float pixelsPerValue;
float leftAdjust;
}
-(IBAction) sliderValueChanged:(id)sender;
@end
在例如 viewDidLoad: 中,对于您的视图控制器,您可以计算两个浮点数。
- (void)viewDidLoad {
float width = slider.frame.size.width;
pixelsPerValue = width / (slider.maximumValue - slider.minimumValue);
leftAdjust = slider.frame.origin.x;
[super viewDidLoad];
}
最后,您的 IBAction 可能如下所示:
-(IBAction) sliderValueChanged:(id)sender
{
NSLog(@"changed");
CGRect frame = label.frame;
frame.origin.x = leftAdjust + (pixelsPerValue * slider.value);
label.frame = frame;
}
希望有帮助。
我不认为这个东西是用 UISlider 实现的,但你可以很容易地使用触摸的 x 坐标。
在 UISlider 的操作中,您可以接受第二个参数。
-(void)action:(UISlider*)sender forEvent:(UIEvent*)event
// ^^^^^^^^^^^^^^^^^^^^^^^^
从 UIEvent 你可以得到一个 UITouch 包含它的 x, y 坐标。