Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UISlider minimumValueImageRectForBounds:和super maximumValueImageRectForBounds返回空矩形_Iphone_Objective C_Ios_Cocoa Touch_Uislider - Fatal编程技术网

Iphone UISlider minimumValueImageRectForBounds:和super maximumValueImageRectForBounds返回空矩形

Iphone UISlider minimumValueImageRectForBounds:和super maximumValueImageRectForBounds返回空矩形,iphone,objective-c,ios,cocoa-touch,uislider,Iphone,Objective C,Ios,Cocoa Touch,Uislider,我将UISlider子类化,以使拇指变小,并希望覆盖minimumValueImageRectForBounds和maximumValueImageForBounds以使其宽度减小2px。所以我的代码是 - (CGRect)minimumValueImageRectForBounds:(CGRect)bounds { CGRect stdRect = [super minimumValueImageRectForBounds:bounds]; return CGRectMake(

我将
UISlider
子类化,以使拇指变小,并希望覆盖
minimumValueImageRectForBounds
maximumValueImageForBounds
以使其宽度减小2px。所以我的代码是

- (CGRect)minimumValueImageRectForBounds:(CGRect)bounds
{
    CGRect stdRect = [super minimumValueImageRectForBounds:bounds];
    return CGRectMake(stdRect.origin.x + 2, stdRect.origin.y, stdRect.size.width - 2, stdRect.size.height);
}
关键是stdRect是空矩形(0,0,0,0)

更糟的是,如果我显式地设置一个这样的矩形

- (CGRect)minimumValueImageRectForBounds:(CGRect)bounds
{
    return CGRectMake(2, 0, 40, 8);
}
它根本不影响最小值图像位置


有什么想法吗?

不要这样做。这是一个旧的,不正确的答案,由过去的我。我讨厌那个家伙

--


一般来说,您可能不想将Apple标准UI控件划分为子类。您可能想要构建它并自己设置这些属性(不确定它们是否可设置,但似乎应该设置)

哈哈,我刚想出来。我读得不够仔细

设置
minimumValueImage
与调用
setMinimumTrackImage:forState:
不同。
minimumValueImage
是一个显示在滑块左侧的图像,与滑块中发生的事情无关。覆盖
minimumValueImageRectForBounds
会更改此图像的尺寸(默认尺寸为0pt宽),因此滑块框的宽度会减小并向右移动。据我所知,没有办法修改minimumTrackImage的矩形(例如使其延伸到拇指图像的右侧);只能更改图像

我还没有真正理解允许您设置
最小值image
的意义。看起来您可以通过更改滑块的大小并在滑块的侧面添加单独的UIImageView来完成相同的任务。谁知道呢


请注意,我在这里所说的一切都以同样的方式适用于
maximumValueImage
setMaximumTrackImage:forState
方法。

这很奇怪。因为如果我愿意的话,这是苹果公司对子类说的四种方法中的两种。“如果您想自定义绘制最小值图像的矩形,可以重写此方法并返回不同的矩形。”是的,您当然可以这样做,但如果有可以手动设置的属性,我想您会发现这通常是一个更简单的路径。也许我应该用“在使用Apple UI元素时,更喜欢代码配置而不是子类化”来表达我的观点。-对于这里的不清楚,我深表歉意。虽然我完全不同意我过去2012年的观点,但我将把这个答案留在这里,作为我讨厌重写历史的证据。(看到我在那里做了什么吗,未来的自我?)我也看到了这一点。我想补充一点,看起来最小值图像的rect几乎是thumb图像所在位置的函数,如果覆盖
thumbRectForBounds
,它会变得更加明显。