如何阅读UISlider拇指图像的大小

我试图在UISlider的上方放置一个额外的UIView。 要做到这一点,我需要拇指图像的宽度。 在iOS6中,这工作正常。 我可以用:

CGFloat thumbWidth = self.navSlider.currentThumbImage.size.width; 

(如在这个答案中看到的: 如何获得UISlider的拇指图像的中心 )

这在iOS7中返回0.0f。 我也尝试阅读使用:

 UIImage *thumb = [self.navSlider thumbImageForState:UIControlStateNormal]; 

但大拇指结束了零。

是否可以读取默认滑块图像的大小? 或者我将不得不find它,设置一个常数,以及苹果如何不改变它呢?

currentThumbImage属性的文档说:

如果未使用setThumbImage:forState:方法设置自定义缩略图,则此属性包含值nil。 在这种情况下,接收器使用默认的拇指图像进行绘制。

thumbImageForState:上的文档thumbImageForState:不太清楚:

返回值与指定状态关联的拇指图像, 如果无法检索到合适的图像 ,则为零。

我想你可能会运气不佳,试图找出默认的拇指大小。 如何安装一个“自定义”拇指图像看起来像系统图像? 这将解决苹果从你下面改变它的问题。

我在我的子类中使用这个:

 CGRect trackRect = [self trackRectForBounds:self.bounds]; CGRect thumbRect = [self thumbRectForBounds:self.bounds trackRect:trackRect value:0]; CGSize thumbSize = thumbRect.size; 

您需要使用setThumbImage forState设置最初的拇指图像。 这适用于我在iOS7中正常工作,并返回图像的正确宽度。 滑块设置在故事板中,并通过IBOutlet连接。

 - (void)viewDidLoad { [super viewDidLoad]; [self.slider setThumbImage:[UIImage imageNamed:@"tick.jpg"] forState:UIControlStateNormal]; float check = self.slider.currentThumbImage.size.width; NSLog(@"Check is %f", check); }