我有一个UISlider子类,应该实现自定义外观。我用可伸缩的图像做这个:
UIImage* sliderBar = [UIImage imageNamed: @"SliderLeft.png"];
UIImage* sliderLeft = [sliderBar stretchableImageWithLeftCapWidth: 7 topCapHeight: 0];
sliderBar = [UIImage imageNamed: @"SliderRight.png"];
UIImage* sliderRight = [sliderBar stretchableImageWithLeftCapWidth: 1 topCapHeight: 0];
UIImage* sliderRing = [UIImage imageNamed: @"SliderRing.png"];
UIImage* sliderRingH = [UIImage imageNamed: @"SliderRing-Highlighted.png"];
[self setMinimumTrackImage: sliderLeft forState: UIControlStateNormal];
[self setMaximumTrackImage: sliderRight forState: UIControlStateNormal];
[self setThumbImage: sliderRing forState: UIControlStateNormal];
[self setThumbImage: sliderRingH forState: UIControlStateHighlighted];
这在运行3.1.3的设备上运行正常。但是,在iPad(3.2.x)或iOS 4.x设备上,看起来它正在拉伸最右边的像素,并且从不绘制端盖。
SliderLeft.png是8像素宽(没有右端盖),SliderRight.png是11像素。
我没有看到UIImage或UISlider中的任何内容发生了变化。
这里有任何已知的陷阱吗?就像我说的那样,当我写这篇文章的时候一切正常,但是较新的操作系统似乎打破了它。