Как установить фоновое изображение представления?

Я - новичок при Касании/iPhone OS Obj-C/Cocoa.

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

Скажите, что у меня есть 10 изображений. Я 've использовал его как это:

//random image generation
NSString* imageName;
int aRandomNumber = arc4random() % 10;
imageName =[NSString stringWithFormat:@"g%d.jpg",aRandomNumber]; 
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:imageName]]];
NSLog(@"aRandomNumber is %d", aRandomNumber);
//random image is generated

То, что это хорошо работало

  • Теперь, скажите, что у меня есть текстовые метки на моем представлении, и текст не отображается правильно из-за цветов изображения. Как я могу сделать его немного прозрачным? (Я предполагаю в Интерфейсном Разработчике его названную альфу.)
  • Скажите, что мое изображение не 320x480. Как я устанавливаю его для заполнения всего представления?

Как я могу сделать это с UIView/UIImageView?

Я нашел initWithHue:saturation:brightness:alpha: в документации, но это не работает:

self.view.backgroundColor = [[UIColor alloc] initWithHue:0.0 saturation:1.0 brightness:1.0 alpha:1.0];

Помогите!


Друг предлагается........

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:imageName]]];

.......... он сказал, что это более эффективно, потому что это не сохраняет образ в кэше.

27
задан Daniel 1 February 2010 в 04:31
поделиться

3 ответа

Вы хотите, чтобы цвет фона вашего основного вида был полупрозрачным? За этим ничего нет... так что на самом деле ничего не произойдет:

Если вы хотите изменить альфа любой вид, используйте свойство альфа:

UIView *someView = [[UIView alloc] init];
...
someView.alpha = 0.8f; //Sets the opacity to 80%
...

Сами виды имеют альфа прозрачность, а не только UIColor.

Но так как ваша проблема в том, что вы не можете читать текст поверх изображений... тоже:

.
  1. [ДИЗАЙН] Пересмотрите конструкцию/место расположения изображений. Необходимы ли они в качестве фоновых изображений? Как насчет размещения этикеток?
  2. .
  3. [CODE] Это не совсем лучшее решение, но что можно сделать, так это создать UIView, чей кадр занимает всю страницу и добавить к ней альфа-прозрачность. Это создаст своего рода "оверлей".
UIView *overlay = [[[UIView allocation] init] autorelease];
overlay.frame = self.view.boundaries;
overlay.alpha = 0.2f;
[self.view addSubview:overlay];
... Добавить остальные виды
1
ответ дан 28 November 2019 в 04:01
поделиться

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

Лучший дизайн будет иметь этикетки на постоянном фоне с изображениями, изменяющимися за этим.

Вы можете установить цвет фона фона из чистого до белого и установить из альфа до 50,0, вы получаете хороший полупрозрачный эффект. Единственная проблема заключается в том, что фон этикетки - это stark прямоугольник.

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

Лучший метод будет создать изображение предпосылки, который вы хотите, а затем поместите это в ImageView и поместите метку с помощью прозрачного фона по умолчанию на это.

Простые Uiview не имеют фона изображения. Вместо этого вы должны сделать UiimageView ваш главный вид, а затем поверните изображения, хотя свой свойство изображения. Если вы устанавливаете режим UiimageView в «Scale, чтобы соответствовать», он будет масштабировать любое изображение, чтобы соответствовать границам представления.

2
ответ дан 28 November 2019 в 04:01
поделиться

Помимо всех других ответов здесь, я действительно не думаю, что использование backgroundColor таким образом является правильным способом решения задач. Лично я бы создал UIImageView и вставил его в вашу иерархию представлений. Вы можете либо вставить его в свой вид сверху и полностью отодвинуть назад с помощью sendSubviewToBack:, либо вы можете сделать UIImageView родительским представлением.

Я бы не стал беспокоиться о таких вещах, как эффективность каждой реализации на данном этапе, потому что, если вы на самом деле не видите проблемы, это действительно не имеет значения. На данный момент вашим первым приоритетом должно быть написание кода, который вы можете понять и который можно легко изменить. Создание UIColor для использования в качестве фонового изображения - не самый простой способ сделать это.

38
ответ дан 28 November 2019 в 04:01
поделиться