我正在尝试设置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)
这是结果 以前有没有人遇到这个问题,任何帮助都会很棒?
答案 0 :(得分:8)
您编写的代码很好,但是,您误解了setMinimumVolumeSliderImage
和setMaximumVolumeSliderImage
实现的内容。这些方法用于实际设置控件的轨迹图像。
您正在minimumValueImage
寻找与maximumValueImage
和UISlider
相当的内容。不幸的是,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)
您的代码运行正常。但是,您需要提供可伸缩的图像。这个想法是图像增大和缩小以适应滑块移动时提供的空间量,因此您需要图像知道如何操作。