Вот что происходит:
Изображения, которые вы предоставляете для UIProgressView
, в основном перемещаются в UIImageViews
, а UIImageView
растягивает изображение, чтобы заполнить пространство.
Если вы просто сделаете:
[progressView setTrackImage:[UIImage imageNamed:@"track.png"]];
Тогда вы получите странные результаты, потому что он пытается растянуть изображение шириной 10 пикселей, чтобы заполнить (например) изображение шириной 100 пикселей.Это означает (примерно), что каждый пиксель на изображении будет повторяться 10 раз.Так что, если бы пиксели на нашем изображении были:
0123456789
Затем, поместив это изображение прямо в изображение шириной 100px, растянем его примерно так:
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
, и вы получите что-то, что выглядит правильно:
tl; dr:
Размер ваших изображений должен быть изменен.