我正试图在UISlider中将拇指放在拇指上方的另一个UIView。为此,我需要拇指图像的宽度。在iOS6中,这很好用。我可以用:
CGFloat thumbWidth = self.navSlider.currentThumbImage.size.width;
(如答案所示:How to get the center of the thumb image of UISlider)
这在iOS7中返回0.0f。我也试过用它来阅读:
UIImage *thumb = [self.navSlider thumbImageForState:UIControlStateNormal];
但是拇指最终没有。
是否可以读取默认滑块拇指图像的大小?或者我必须找到它,设定一个常数,以及Apple如何在以后不改变它?
答案 0 :(得分:6)
currentThumbImage
财产上的文档说:
如果没有使用设置自定义拇指图像 setThumbImage:forState:方法,此属性包含值nil。 在这种情况下,接收器使用默认的拇指图像 图。
thumbImageForState:
上的文档不太清楚:
返回值与指定状态或相关联的拇指图像 如果无法检索到合适的图像,则为零。
我认为你可能想弄清楚默认的拇指大小。如何安装看起来与系统映像完全相同的“自定义”拇指图像?这将解决苹果公司将其从你身下改掉的问题。
答案 1 :(得分:6)
我在我的子类中使用它:
CGRect trackRect = [self trackRectForBounds:self.bounds];
CGRect thumbRect = [self thumbRectForBounds:self.bounds trackRect:trackRect value:0];
CGSize thumbSize = thumbRect.size;
答案 2 :(得分:0)
您需要使用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);
}
答案 3 :(得分:0)
如果布局流程尚未完成,我相信这有时会返回0。我遇到了一些麻烦。
#left
{
width: 200px;
/*min-height: 100%px;*/ % before px? really?
background: blue;
overflow: hidden;
height: 100px;
float: left;
}
#right
{
width: 800px;
background: cyan;
height: 100px;
float: right;
}
答案 4 :(得分:0)
这是另一个有效的,但它有点" hackier"而不是第一个,并在默认拇指上做出假设图像宽度在未来版本的iOS(过去11)中不会发生变化
- (CGFloat)thumbImageWidth // default thumb image is 30 px,
{
double imgThumbImageWidth = self.currentThumbImage.size.width;
if (imgThumbImageWidth && imgThumbImageWidth != 0 && imgThumbImageWidth != thumbImageWidth) {
thumbImageWidth = imgThumbImageWidth;
}
else if (!thumbImageWidth || thumbImageWidth == 0) { // No custom image set, use 30
thumbImageWidth = 31;
}
return thumbImageWidth;
}