Ответ 1
Вот что происходит:
Изображения, которые вы предоставляете UIProgressView
, в основном запихиваются на UIImageViews
, а UIImageView
растягивает изображение, чтобы заполнить пробел.
Если вы просто выполните:
[progressView setTrackImage:[UIImage imageNamed:@"track.png"]];
Затем вы получите странные результаты, потому что пытаетесь растянуть изображение шириной 10 пикселей, чтобы заполнить (например) изображение шириной 100 пикселей. Это означает (примерно), что каждый пиксель в изображении будет повторяться 10 раз. Поэтому, если пиксели на нашем изображении были:
0123456789
Затем, поместив это изображение прямо в широкоэкранное изображение шириной 100 пикселей, растяните его примерно так:
000000000011111111112222222222333333333344444444445555555555...
Это то, что происходит с вами.
Что вы действительно хотите сделать, так это:
01234567812345678123456781234567812345678...123456789
Другими словами, вы хотите, чтобы изображение имело левый край 1 точки, который никогда не растягивается, центр, который должен быть выложен плиткой, и иметь правый край 1 точки, который также никогда не растягивается. Для этого вам необходимо изменить размер изображения:
UIImage *track = [[UIImage imageNamed:@"track"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 1, 0, 1)];
[progressView setTrackImage:track];
Если вы хотите, чтобы это также было правильно подобрано по вертикали, тогда вставки кромок должны быть {1, 1, 1, 1}
(при условии, что вам нужна граница в 1 байт).
Сделайте то же самое с progressImage
, и вы получите что-то, что выглядит правильно:
ТЛ; др:
Ваши изображения должны быть изменены.