UIProgressView пользовательских треков и изображений прогресса в iOS 7.1
iOS 7.1, похоже, нарушил пользовательские свойства изображения в UIProgressView
. Код, который использовался для успешной настройки представлений прогресса, теперь дает внешний вид по умолчанию.
Я установил образец проекта, который делает это в viewDidLoad
:
self.progressView.frame = CGRectMake(self.progressView.frame.origin.x, self.progressView.frame.origin.y, self.progressView.frame.size.width, 9);
UIImage *img = [UIImage imageNamed:@"progress_bar_fill.png"];
img = [img resizableImageWithCapInsets:UIEdgeInsetsMake(0, 4, 0, 4)];
self.progressView.progressImage = img;
img = [UIImage imageNamed:@"progress_bar_empty.png"];
img = [img resizableImageWithCapInsets:UIEdgeInsetsMake(0, 4, 0, 4)];
self.progressView.trackImage = img;
Я по-прежнему получаю вид по умолчанию. Я прошел и проверил, что img
не равен нулю, как и ожидалось. Что происходит?
ОБНОВЛЕНИЕ: Для этого существует OpenRadar, и я также подал собственный радар в комплекте с образцом проект.
ОБНОВЛЕНИЕ 2: Как указано ниже, вы должны добавить это, чтобы JEProgressView работал правильно:
_progressBar.tintColor = [UIColor clearColor];
Ответы
Ответ 1
Это очень раздражает. Я не нашел способ исправить это без подкласса UIProgressView
.
В любом случае, как я исправил это: https://gist.github.com/JohnEstropia/9482567
Вам придется изменить вхождения от UIProgressView
до JEProgressView
, в том числе в NIB и раскадровки.
В принципе, вам нужно принудительно назначить изображения непосредственно детям UIProgressView
UIImageView
s.
Подкласс необходим для переопределения layoutSubviews
, где вы настраиваете высоты изображений в соответствии с размерами изображений.
Ответ 2
Вы правы. Эта ошибка присутствовала, поскольку 7.1 впервые появился в семестре Xcode 5.1. Я отправил (и повторно представил) ту же ошибку для всех 5 семян Xcode 5.1, а теперь на Xcode 5.1. Но Apple не исправила это.
Пожалуйста, отправьте эту ошибку! Вы можете обратиться к моей ошибке, если хотите: 15547259. Чем больше, тем лучше! Я считаю это серьезным поломкой, потому что это означает, что приложение, работающее нормально, теперь сломано (если оно использует представление прогресса с progressImage
).
Ответ 3
Я использовал решение John Estropia, но он показывал панель оттенков blu в наложении на мой, с довольно странным графическим эффектом.
Я добавил
_progressBar.tintColor = [UIColor clearColor];
И все прошло отлично. Спасибо за решение человека.
Ответ 4
Привет друзья. Я использовал следующий код для добавления UIProgressView в свое приложение:
UIProgressView *progressView;
progressView = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault];
progressView.progressTintColor[UIColor colorWithRed:187.0/255 green:160.0/255 blue:209.0/255 alpha:1.0];
[[progressView layer]setCornerRadius:10.0f];
[[progressView layer]setBorderWidth:2.0f];
[[progressView layer]setMasksToBounds:TRUE];
progressView.clipsToBounds = YES;
[[progressView layer]setFrame:CGRectMake(30, 295, 260, 25)];[[progressView layer]setBorderColor[UIColor whiteColor].CGColor];
progressView.trackTintColor = [UIColor clearColor];
[progressView setProgress: (float)count/15 animated:YES];
Надеюсь, что код вам будет полезен, я нашел его здесь: Источник кода
Ответ 5
Я попытался реализовать файлы JEProgressView от John Estropia, но он не работает. Я, должно быть, сделал что-то не так, но я немного новичок в этом. Может кто-нибудь объяснить, как именно это сделать? Я знаю, что это может быть глупый вопрос, но после многих поисковых запросов я думал, что вопрос был единственным способом.
Ответ 6
Я тоже поймал эту ошибку. Я попытался исправить игру, используя свойства UIProgressView, но без результата. Решение John Estropia, вышедшее выше, также не работает для меня, возможно, оно не поддерживает автоматическую компоновку, поэтому я сделал свое собственное временное решение для обхода этой ошибки. https://github.com/ninjaproger/AKProgressView
Ответ 7
Для меня это работало для iOS версии 7.1 и выше для изображения прогресса:
if ([[UIDevice currentDevice] systemVersion] >= 7)
self.progressView.tintColor = [UIColor colorWithPatternImage:img];
Ответ 8
С помощью Xcode5 теперь можно создавать измененные изображения с помощью Interface Builder
. Мы можем указать направление изменения и вставку содержимого и выбрать область, которая должна быть исправлена прямо в построителе интерфейса.
Чтобы воспользоваться этой функцией, вы используете Asset Catalog
для изображения, которое вы хотите изменить.
![введите описание изображения здесь]()