如何正确设置MPVolumeView的最大和最小图像

时间:2015-02-01 04:05:43

标签: ios swift ios8 uislider mpvolumeview

我正在尝试设置MPVolumeView的最大和最小图像,但我无法使其正常工作

这是代码

VolumeView.setVolumeThumbImage(UIImage(named: "VolumeSlider"), forState: UIControlState.Normal)
VolumeView.setMinimumVolumeSliderImage(UIImage(named: "VolumeUp"), forState: UIControlState.Normal)
VolumeView.setMaximumVolumeSliderImage(UIImage(named: "VolumeDown"), forState: UIControlState.Normal)

这是结果 以前有没有人遇到这个问题,任何帮助都会很棒?

4 个答案:

答案 0 :(得分:8)

您编写的代码很好,但是,您误解了setMinimumVolumeSliderImagesetMaximumVolumeSliderImage实现的内容。这些方法用于实际设置控件的轨迹图像。

您正在minimumValueImage寻找与maximumValueImageUISlider相当的内容。不幸的是,MPVolumeView没有这样的方法。

唯一的解决方法是在音量视图的任一侧放置UIImageView以显示图像。这样做的缺点是路线按钮会妨碍最大值图像,因此您必须设置showsRouteButton = NO;以防止这种情况发生。

答案 1 :(得分:4)

实际上有一种非常简单的方法:

if let volumeSliderView = volumeView.subviews.first as? UISlider {
    volumeSliderView.minimumValueImage = #imageLiteral(resourceName: "icon_music_volume_min")
    volumeSliderView.maximumValueImage = #imageLiteral(resourceName: "icon_music_volume_max")
}

答案 2 :(得分:2)

您可以通过外观方法为MPVolumeView设置最小和最大值图像。以下是如何在Objective-C中执行此操作:

如果您只支持iOS 9.0 +:

[[UISlider appearanceWhenContainedInInstancesOfClasses:@[[MPVolumeView class]]] setMinimumValueImage:[UIImage imageNamed:@"VolumeDown"]];
[[UISlider appearanceWhenContainedInInstancesOfClasses:@[[MPVolumeView class]]] setMaximumValueImage:[UIImage imageNamed:@"VolumeUp"]];

或者5.0之后的任何iOS版本:

if( [UISlider respondsToSelector:@selector(appearanceWhenContainedInInstancesOfClasses:)] )
{
   [[UISlider appearanceWhenContainedInInstancesOfClasses:@[[MPVolumeView class]]] setMinimumValueImage:[UIImage imageNamed:@"VolumeDown"]];
   [[UISlider appearanceWhenContainedInInstancesOfClasses:@[[MPVolumeView class]]] setMaximumValueImage:[UIImage imageNamed:@"VolumeUp"]];
}
else
{
   [[UISlider appearanceWhenContainedIn:[MPVolumeView class], nil] setMinimumValueImage:[UIImage imageNamed:@"VolumeDown"]];
   [[UISlider appearanceWhenContainedIn:[MPVolumeView class], nil] setMaximumValueImage:[UIImage imageNamed:@"VolumeUp"]];
}

P.S。也许有人可以编辑我的答案,也可以在这里添加Swift版本。

答案 3 :(得分:0)

您的代码运行正常。但是,您需要提供可伸缩的图像。这个想法是图像增大和缩小以适应滑块移动时提供的空间量,因此您需要图像知道如何操作。