1

UISlider可以在 iPhone 中设置控件的最大值和最小值。因此滑块将工作 - 好的 - 好。

首先,我将举例说明我到底想要实现什么。

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

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

4

2 回答 2

3

从用于测试的 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;
}

希望有帮助。

于 2010-07-01T09:16:06.437 回答
0

我不认为这个东西是用 UISlider 实现的,但你可以很容易地使用触摸的 x 坐标。

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

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

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

于 2010-07-01T09:20:51.260 回答