iOS 7 - 自定义 UISlider 设计不起作用
Posted
技术标签:
【中文标题】iOS 7 - 自定义 UISlider 设计不起作用【英文标题】:iOS 7 - Custom UISlider design not working 【发布时间】:2013-09-16 05:36:35 【问题描述】:在以前的 ios 版本中一切正常,但在 iOS 7 上却不行。 它没有为 UISlider 设置自定义设计,因此视图上没有任何内容,音量滑块视图为空。其他一切正常。
代码:
for (UISlider *slider in volumeSlider.subviews)
NSLog(@"Searching!");
if ([slider isKindOfClass:[UISlider class]])
NSLog(@"SLIDER FOUND!");
[slider setThumbImage:[UIImage imageNamed:@"thumbSlider.png"] forState:UIControlStateNormal];
[slider setMinimumTrackImage:[[UIImage imageNamed:@"sliderMax.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateNormal ];
[slider setMaximumTrackImage:[[UIImage imageNamed:@"sliderMin.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateNormal ];
【问题讨论】:
由于保密协议,您应该在 Apple 论坛上发布此内容。 你找到解决办法了吗? 不,我开始在 iOS 7 中使用默认 UISlider 外观,在 iOS6 中使用自定义滑块 【参考方案1】:iOS7 现已发布,因此 NDA 不再适用。如果您需要支持低于 iOS6 的操作系统,您可以使用此代码。这也适用于 iOS7。注意:如果只需要支持iOS6及更高版本,有苹果提供的直接API来设置这些图像来自定义MPVolumeView的外观,具体是setVolumeThumbImage:(UIImage *) forState:(UIControlState), setMinimumVolumeSliderImage:(UIImage *) forState :(UIControlState) 和 setMaximumVolumeSliderImage:(UIImage *) forState:(UIControlState)。
// replace the standard look and feel for the MPVolumeSlider with custom images
// note: on iOS7 it is necessary to set the thumb image last or the thumb will be drawn under the slider (not pretty), on iOS6 the order didn't seem to matter.
UIView *a = nil;
for (UIView *view in [self.volumeView subviews])
if ([[[view class] description] isEqualToString:@"MPVolumeSlider"])
a=view;
UIImage *volumeBackgroundImage = [[UIImage imageNamed:@"volume_background"] resizableImageWithCapInsets:UIEdgeInsetsMake(9, 5, 7, 5)];
[(UISlider *)a setMinimumTrackImage:[[UIImage imageNamed:[[ApplicationType sharedInstance] imageForAppType:@"volume_progress"]] resizableImageWithCapInsets:UIEdgeInsetsMake(9, 5, 7, 5)] forState:UIControlStateNormal];
[(UISlider *)a setMaximumTrackImage:volumeBackgroundImage forState:UIControlStateNormal];
[(UISlider *)a setThumbImage:[UIImage imageNamed:@"volume_handle"] forState:UIControlStateNormal];
【讨论】:
我认为这甚至适用于 iOS 5。对于 iOS 4,您只需摆脱 resizableImageWithCapInsets-Call。 在 iOS 7 上我的应用程序中,拇指位于轨道下方,感谢您对设置它的最后评论!【参考方案2】:可能 Apple 更改了一些 API。如果您将此代码用于电影播放器的音量滑块,请尝试使用MPVolumeView。
【讨论】:
我正在使用 MPVolumeView 明白。部署目标小于 6.0。这就是您搜索滑块的原因。以上是关于iOS 7 - 自定义 UISlider 设计不起作用的主要内容,如果未能解决你的问题,请参考以下文章
在ios中自定义progressview / UISlider