2014-05-14 7 views
0

У меня 2 изображения (280x20 пикселей) с сплошным цветом (зеленый и оранжевый), и я помещаю оранжевый за зеленый. Я хочу изменить или растянуть (вниз) по ширине зеленый. Я не забочусь о потере качества, изображения сделаны из сплошного цвета.Изменить UIImageView или UIImage width

Почему? Они будут представлять данные, если у меня есть распределение 50% -50%, я хочу, чтобы зеленый был 140x20. Таким образом, мы можем понять визуальную помощь изображений (что-то вроде гистограммы), что оба изображения имеют одинаковый размер. Если данные 75% -25%, я хочу, чтобы зеленый был (280 * 0,75) по ширине, показывая на этот раз пропорцию 3: 1. Заметьте, я не изменю размер оранжевого изображения, она будет отдыхать за зеленым, и пользователь увидит, что зеленый не покрывает.

У меня нет проблем делать какие-либо вычисления относительно доли данных. Моя проблема заключается в обработке изображения масштаба/стрейч/и т.д.. Я попробовал следующее:

//imageView is the imageView representing the "green image bar" 
UIImageView* imageView = (UIImageView*) [cell viewWithTag:202]; 
double scale = 0.75; 
CGRect frame = imageView.frame; 
imageView.frame = CGRectMake(frame.origin.x, frame.origin.y, 280*scale, frame.size.height); 

Я использовал, чтобы иметь некоторый прогресс на самом деле изменение размера UIImageView, но позиция была такой же. Вызов изображения (теперь с меньшей шириной), чтобы он выглядел так, как он «переместился» вправо, Я хочу, чтобы это изображение оставалось с выравниванием по левому краю, поскольку оно первоначально имело, но с меньшей шириной.

В раскадровке это находится внутри ячейки прототипа, поэтому я получил UIImageView по тегу. Также попробовал почти каждый режим (View-> Mode на вкладке атрибута на раскадровке), в настоящее время есть «Scale to Fill», который не работает в данный момент.

Должен ли я изменить размер UIImage внутри UIImageView? Должен ли я изменить размер всего UIImageView? Надеюсь, кто-то может помочь мне с хорошей практикой в ​​этом, спасибо! : D

PS: Будет ли я опубликовал несколько скриншотов, не хватает репутации, хотя :(

ответ

0

Если вы используете только сплошные цвета, а затем просто использовать UIView и задающие backgroundColor свойства Использование изображения для этого. цель излишне усложнять, кроме того, UIImageView является подклассом UIView, поэтому только дополнительная функциональность будет относиться к вещам, вам не нужно.

так что теперь мы остановились на использовании UIViews вместо изображения, вам больше не нужно беспокоиться о UIViewContentMode (или шкале для заполнения бессмыслицы). Просто измените свойства size и origin.

Пример использования представлений вместо изображений для этой цели: (я не могу гарантировать синтаксис, я не пишу это от моего Mac)

UIView *greenView = [[UIView alloc] initWithFrame:CGRectMake(0,0,280,20)]; 
UIView *orangeView = [[UIView alloc] initWithFrame:CGRectMake(0,0,280,20)]; 

greenView.backgroundColor = [UIColor greenColor]; 
orangeView.backgroundColor = [UIColor orangeColor]; 

CGRect newGreenFrame = greenView.frame; 
newGreenFrame.size.width = newGreenFrame.size.width * 0.75; 

greenView.frame = newGreenFrame; 

Это хороший способ инициализации и изменений кадры UIViews. Существуют и другие, более короткие способы сделать это, но это позволяет упростить чтение кода.

+0

Точно, что мне нужно, спасибо! – Fdo

Смежные вопросы