如何正确设置 MPVolumeView 的最大和最小图像
Posted
技术标签:
【中文标题】如何正确设置 MPVolumeView 的最大和最小图像【英文标题】:how to set the maximum and minimum image of MPVolumeView correctly 【发布时间】:2015-02-01 04:05:43 【问题描述】:我正在尝试设置 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)
这是结果 以前有没有人遇到过这个问题,任何帮助都会很棒?
【问题讨论】:
【参考方案1】:您编写的代码很好,但是您误解了setMinimumVolumeSliderImage
和setMaximumVolumeSliderImage
的实现。这些方法用于实际设置控件的轨迹图像。
您正在寻找与UISlider
上的minimumValueImage
和maximumValueImage
类似的东西。不幸的是,MPVolumeView
没有这样的方法。
唯一的解决方法是将UIImageView
放置在体积视图的任一侧以显示您的图像。这样做的缺点是路由按钮会妨碍最大值图像,因此您必须设置showsRouteButton = NO;
来防止这种情况。
【讨论】:
它也吸引了我。命名不佳的方法 - 苹果真丢脸!【参考方案2】:其实有一个很简单的方法:
if let volumeSliderView = volumeView.subviews.first as? UISlider
volumeSliderView.minimumValueImage = #imageLiteral(resourceName: "icon_music_volume_min")
volumeSliderView.maximumValueImage = #imageLiteral(resourceName: "icon_music_volume_max")
【讨论】:
【参考方案3】:您可以通过外观方法为 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"]];
在 Swift 中:
UISlider.appearance(whenContainedInInstancesOf: [MPVolumeView.self]).minimumValueImage = UIImage(systemName: "speaker.fill")
UISlider.appearance(whenContainedInInstancesOf: [MPVolumeView.self]).maximumValueImage = UIImage(systemName: "speaker.wave.3.fill")
【讨论】:
以上是关于如何正确设置 MPVolumeView 的最大和最小图像的主要内容,如果未能解决你的问题,请参考以下文章
Swift:如何以编程方式设置 iphone 音量 [重复]