Подтвердить что ты не робот

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];
4b9b3361

Ответ 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 для изображения, которое вы хотите изменить. введите описание изображения здесь введите описание изображения здесь введите описание изображения здесь введите описание изображения здесь