我正在试验iOS 5中关于UIProgressView
的一些新属性。他们是:
@property(nonatomic, retain) UIImage *progressImage;
@property(nonatomic, retain) UIImage *trackImage;
这些新属性可以自定义“进度”和“曲目”图像,这样您就可以制作精美的进度条而无需滚动 - 自己的。
但我无法理解Apple“如何延伸”进度图像,因为文档有点夸张/或者有一些我不知道的标准。 无论如何,我在问是否有人可以帮助我了解如何取得适当进展和跟踪图片。
当我加载自定义图片时,无论我尝试哪种尺寸,我都会得到这样的结果:
我的测量结果如下:
最后,这是我的自定义图片:
progressImage.png
trackImage.png
答案 0 :(得分:109)
这是发生了什么:
您提供给UIProgressView
的图片基本上被推入UIImageViews
,UIImageView
正在拉伸图片以填充空间。
如果您只是这样做:
[progressView setTrackImage:[UIImage imageNamed:@"track.png"]];
然后你会得到奇怪的结果,因为它试图拉伸10px宽的图像来填充(例如)100px宽的图像视图。这意味着(大致)图像中的每个像素将重复10次。因此,如果我们的图像中的像素是:
0123456789
然后将该图像直接放入100px宽的图像视图中会将其拉伸如下:
000000000011111111112222222222333333333344444444445555555555...
这就是你发生的事情。
你真正想要发生的事情是:
01234567812345678123456781234567812345678...123456789
换句话说,您希望图像具有从未拉伸的1点左边缘,要平铺的中心,以及也从不拉伸的1点右边缘。为此,you'll need to make the image resizable:
UIImage *track = [[UIImage imageNamed:@"track"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 1, 0, 1)];
[progressView setTrackImage:track];
如果你想让它垂直适当地平铺,那么边缘插入应该是{1, 1, 1, 1}
(假设你想要一个1点边框)。
对progressImage
做同样的事情,你会得到一些看起来正确的东西:
您的图片需要调整大小。