菜单滑块 - iPhone在滑动时获得UISlider指针的x坐标

时间:2010-07-01 08:20:28

标签: iphone objective-c xcode uislider

可以设置max& iPhone中UISlider控件的最小值。因此滑块可以工作 - 好 - 好。

首先,我将举例说明我想要实施的内容。

  • 在iPad中默认使用日历应用程序。
  • 打开日历,在底部 - 您可以看到日/周/月列表
  • 当您滑动手指时,滑动时会看到一个弹出菜单。
  • 我想在滑块上实现相同的功能。

我正在努力,但如果我能够得到x坐标,我可以很容易地实现它。任何其他实施相同的建议都是最受欢迎的。

2 个答案:

答案 0 :(得分:3)

从UILabel开始进行测试(只需在其中写入内容)并将IBOulets添加到其中,以及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;
}

希望有所帮助。

答案 1 :(得分:0)

我认为这个东西不是用UISlider实现的,但你可以轻松使用 touch 的x坐标。

在UISlider的动作中,你可以接受第二个参数。

-(void)action:(UISlider*)sender forEvent:(UIEvent*)event
//                              ^^^^^^^^^^^^^^^^^^^^^^^^

从UIEvent你可以得到一个包含x,y坐标的UITouch。