【问题标题】:UISlider - For Volume 0.0 to 1.0 - iOS XCODEUISlider - 适用于 0.0 到 1.0 卷 - iOS XCODE
【发布时间】:2013-02-15 22:50:06
【问题描述】:

我有一个 UISlider,我想用它来使用 AVAudioPlayer 管理音量级别

我发现的问题是值设置在0到1之间。它只记录0或1。

但是,我希望它能够将 0.1、0.2、0.3 等之间的变量确认为 1.0,以便我可以使用此值来调整游戏声音。

有人知道我该怎么做吗?

我目前有...

- (void)viewDidLoad
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
[slider setValue:[[NSUserDefaults standardUserDefaults] floatForKey:@"sliderValue"]];

(void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

-(IBAction)slidetheslider {
[[NSUserDefaults standardUserDefaults] setFloat:[slider value] forKey:@"sliderValue"];
    GameSounds = slider.value;
    NSLog (@"Volume Level %d", GameSounds);

在下一个 VC 上,我重新加载保存的值....

GameVolume = [[NSUserDefaults standardUserDefaults] floatForKey:@"sliderValue"];
NSLog (@"Volume Slider %d", GameVolume);

此后我使用 GameVolume 作为音量的参考。

问题是如果我尝试 0.0 到 1.0,它只会给我一个 0 或 1。

如果我尝试 0 - 100 然后将 GameVolume 更改为此...

GameVolume = [[NSUserDefaults standardUserDefaults] floatForKey:@"sliderValue"]/100; NSLog (@"Volume Slider %d", GameVolume);

它仍然只给我一个 0 或一个 1

【问题讨论】:

  • 您正在将值转换为整数类型。它最初是一个 CGFloat。
  • GameVolume 成为CGFloat 而不是NSInteger。它可以帮助你很多。
  • 我该怎么做?抱歉,我对此还是比较陌生.. :-)

标签: ios objective-c avfoundation uislider


【解决方案1】:

设置 minimumValue 和 maximumValue 属性。它们默认为 0.0 和 1.0,但是是浮点数,可以设置为您喜欢的任何值。

这是文档:Apple Docs for UISlider

如果您只读取 0 和 1 的值,您可能使用了不正确的类型。请贴出相关代码。

【讨论】:

  • - (void)viewDidLoad { [super viewDidLoad]; // 在从 nib 加载视图后做任何额外的设置。滑块.minimumValue = 0.0;滑块.最大值 = 1.0; [滑块 setValue:[[NSUserDefaults standardUserDefaults] floatForKey:@"sliderValue"]]; } - (void)didReceiveMemoryWarning { [超级 didReceiveMemoryWarning]; // 处理所有可以重新创建的资源。 } -(IBAction)slidetheslider { [[NSUserDefaults standardUserDefaults] setFloat:[slider value] forKey:@"sliderValue"]; GameSounds = slider.value; NSLog (@"音量 %d", GameSounds); }
【解决方案2】:

您可以使用一个数学选项。将最大值和最小值设置为 0 到 100,当您需要一个值时,将当前滑块值除以 100

最小值:0 最大值:100

-(float)getValueOfSlider:(CGFloat)sliderValue
{
    return sliderValue/100;
}

-(float)setSliderValue:(float)inputValue
{
    return inputValue*100;
}

【讨论】:

  • 不需要。只需从 0.0 到 1.0。它们是花车。
猜你喜欢
  • 2017-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多