Высота просмотра прогресса в iOS 7

Я хочу увеличить высоту просмотра прогресса в iOS 6 и ниже, я делаю это с помощью метода появления

  UIImage *progressImage = [[UIImage imageNamed:@"sliderbk-progress.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 4, 0, 5)];
[[UIProgressView appearance] setProgressImage:progressImage];

но теперь в iOS7 этот код не работает, я даже пытаюсь дать приведенный ниже код, но бесполезно. Любая помощь будет полезна. Спасибо

[[UIProgressView appearance] setFrame:CGRectMake(20, 100, 280, 100)];

person Iqbal Khan    schedule 10.09.2013    source источник
comment
@Puneet NDA не имеет ничего общего с stackoverflow. Между прочим, в вопросе нет ничего, что находится под NDA.   -  person Sulthan    schedule 10.09.2013
comment
@Puneet Это правда, однако NDA не применяется к SO (см. Мета для соответствующего обсуждения). Бета может сделать вопросы слишком локализованными (опять же, см. Мета). В этом случае вопрос не содержит ничего, защищенного NDA (API тот же), и на вопрос можно безопасно ответить, исходя из опыта iOS 6 и без нарушения NDA. Голосовать против или закрывать вопрос только потому, что он содержит слова iOS 7 глупо.   -  person Sulthan    schedule 10.09.2013
comment
Справедливый вопрос @Sulthan, но в самом вопросе говорится, что код работает в iOS6, а не в iOS7, и код для установки изображения прогресса через внешний вид действительно работает в iOS6. Я не написал NDA только потому, что увидел в нем iOS7.   -  person Puneet Sharma    schedule 10.09.2013
comment
Как инициализировать UIProgressView?   -  person Bms270    schedule 25.09.2013


Ответы (6)


Если я правильно понимаю вопрос, похоже, что вы хотите увеличить высоту просмотра прогресса в iOS7, а код, который вы использовали ранее в iOS6, больше не работает.

Недавно мне пришлось решить аналогичную проблему, и я сделал это, добавив ограничение в представление прогресса в Interface Builder и явно установив высоту через ограничение. Это решение потребует использования Auto-Layout, поэтому убедитесь, что он у вас включен.

атрибут высоты

Показано: атрибут «Высота» в Инспекторе размеров заметно выделен серым цветом для представления прогресса и не может быть изменен, однако я определил ограничение для самого представления хода выполнения и установил высоту ограничения на 50 пунктов, т.е. фактически отражено в IB.

Из того, что я видел, индикаторы прогресса iOS6 имеют статическое значение высоты, поэтому, если вы также хотите поддерживать iOS6, для этого потребуется другой подход.

person Derek Lee    schedule 26.10.2013
comment
можем ли мы добавить это из кода, когда это приложение работает на iOS7 и в конструкторе интерфейсов, сняв флажок с автопрокладки, чтобы он также мог работать на ios5 - person Iqbal Khan; 06.11.2013
comment
Я установил и изображение прогресса, и изображение отслеживания. Но как только я установил отслеживающее изображение на раскадровке, раскадровка выглядит нормально, но в симуляторе работает неправильно. Мне нужно вручную установить это в коде, чтобы все было правильно. Стиль просмотра прогресса также должен быть UIProgressViewStyleBar. - person huggie; 21.11.2013
comment
Как вы это делаете в коде Objective-C? Я не использую редактор Interface Builder / Storyboard / WYSIWYG. - person Pwner; 22.11.2013
comment
Примечание: вам нужно будет выбрать опцию обновления кадров в UIProgressView после добавления вертикального ограничения. - person Senseful; 13.06.2014
comment
работает, но выдает предупреждение о неуместном представлении ... как бы то ни было исправить это? - person fabian789; 10.10.2014
comment
Я использую этот подход, при установке progressTintColor иногда получаю Error>: CGContextAddPath: invalid context 0x0 - person onmyway133; 14.06.2015
comment
Кто-нибудь еще обнаружил, что UIProgressView сужается по бокам при растяжении? Как будто есть крошечный перекос, который становится более заметным при его растяжении. - person Chris Villa; 03.12.2015

В то время как другие сообщили, что CGAffineTransform () также работает:

[self.progressView setTransform:CGAffineTransformMakeScale(1.0, 3.0)];
person user3189408    schedule 16.01.2014
comment
Вот как я это сделал. Кроме того, этот метод работает, даже если у вас не включена автоматическая компоновка. - person NickEntin; 13.03.2014
comment
Отличное решение, поскольку структура данных CGAffineTransform представляет собой матрицу, используемую для аффинных преобразований. Обычно CGAffineTransformMakeScale принимает 2 аргумента: коэффициент масштабирования оси x и оси y, конечно, высота является аргументом оси y. - person OhadM; 27.07.2015

Здесь уже ответил Как увеличить высоту UIProgressView

@implementation UIProgressView (customView)

- (CGSize)sizeThatFits:(CGSize)size 
{
   CGSize newSize = CGSizeMake(self.frame.size.width,9);
   return newSize;
}

@end
person Shoaib    schedule 10.01.2014

Предлагаем вам Swift версию user3189408 и отличные решения Рушаба для начинающих разработчиков и энтузиастов, таких как я. Протестировано для iOS 7 + / Swift 2.0.

    progressView.transform = CGAffineTransformMakeScale(1.0, 5.0)
person Kevin Kong    schedule 06.01.2016

Swift 3.x

progressView.transform = CGAffineTransform(scaleX: 1.0, y: 5.0)
person Ning    schedule 24.11.2016
comment
Решение автоматической компоновки из раскадровки также прекрасно работает. Спасибо! - person Ning; 09.12.2016

Вы можете заметить, что frame не может быть установлен appearance средством доступа. Вы должны установить его отдельно для каждого просмотра прогресса.

Обычно высота устанавливается в зависимости от стиля индикатора выполнения.

- (id)initWithProgressViewStyle:(UIProgressViewStyle)style; // sets the view height according to the style
person Sulthan    schedule 10.09.2013