如何创建显示UILabel的iOS UISlider,显示1到10范围内的值?

时间:2012-10-12 10:35:39

标签: iphone ios uislider

我是iOS开发的新手,并且很难使用UISlider。我已将UISlider添加到与.xib文件相关联的.h,并且可以查看.m文件中的操作方法,但是当我尝试设置最小值和最大值时在UISlider属性的.xib文件中,XCode崩溃。我认为这与在- (IBAction)slider:(id)sender文件中的.m方法中创建值有关,但我做错了,因为我尝试的一切都会导致XCode崩溃。

4 个答案:

答案 0 :(得分:7)

CGRect frame = CGRectMake(0.0, 0.0, 200.0, 10.0);

// sliderAction will respond to the updated slider value
UISlider *slider = [[UISlider alloc] initWithFrame:frame];
[slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];

//设置滑块的最小值和最大值

    slider.minimumValue = 0.0;
    slider.maximumValue = 10.0;
    slider.continuous = YES;

    // Initial value
    slider.value = 25.0;

//添加要查看的滑块

    [self.view addSubview:slider];


- (IBAction)sliderAction:(id)sender{
    UISlider *MYslider = (UISlider *)sender;
    int SliderValue = (int)roundf(MYslider.value);
    uilable *sliderLabel.text = [NSString stringWithFormat:@"%d", SliderValue];
}

答案 1 :(得分:2)

试试这段代码......

@interface SliderDemoViewController : UIViewController {

      UILabel *sliderLabel;
}

@end

将以下代码放在“SliderDemoViewController.m”文件中。

@implementation SliderDemoViewController

@synthesize sliderLabel;

- (void)dealloc {
  [sliderLabel release];
  [super dealloc];

}

-(IBAction) sliderChanged:(id) sender{

  UISlider *slider = (UISlider *) sender;

  int progressAsInt =(int)(slider.value + 0.5f);

  NSString *newText =[[NSString alloc]
                  initWithFormat:@"%d",progressAsInt];

  self.sliderLabel.text = newText;
  [newText release];
}


@end

并且还可以从此下面的链接中查看有关UISlider的更多信息..

http://www.xprogress.com/post-35-uislider-tutorial-example-how-to-use-slider-in-iphone-sdk-xcode/

我希望这可以帮到你..

:)

答案 2 :(得分:1)

确保你的滑块连接到动作方法..并且假设标签有一个名称为sliderLabel的插座...滑块调用的动作方法,因为它的值被更改可以实现为:

- (IBAction)slider:(id)sender{
    UISlider *slider = (UISlider *)sender;
    int progressAsInt = (int)roundf(slider.value);
    sliderLabel.text = [NSString stringWithFormat:@"%d", progressAsInt];
}

这里的值四舍五入仅显示整数值。我假设sider不是在0-1但范围更大的范围内实现..你已经提到你在nib中实现了滑块..最小值和最大值可以在属性检查器中为滑块设置..如果以编程方式进行,它会略有不同..

答案 3 :(得分:0)

Swift 4:

初始化:

override func viewDidLoad() {
    super.viewDidLoad()

    let slider = UISlider()
    slider.frame = CGRect(x: 0, y: 0, width: 250, height: 35)
    slider.center = self.view.center

    slider.minimumTrackTintColor = .green
    slider.maximumTrackTintColor = .red
    slider.thumbTintColor = .black

    slider.maximumValue = 100
    slider.minimumValue = 0
    slider.setValue(50, animated: false)

    slider.addTarget(self, action: #selector(ViewController.changeVlaue(_:)), for: .valueChanged)

    self.view.addSubview(slider)

}

处理程序

@objc func changeVlaue(_ sender: UISlider) {
    print("value is" , Int(sender.value));
}