Наложение пользовательского интерфейса на фоновое изображение

#ios #uiview #uikit #uiimageview #uiimage

#iOS #пользовательский интерфейс #uikit #uiimageview #uiimage

Вопрос:

Можно ли наложить UIView изображение без использования UIImageView конструктора интерфейсов?

Если нет, как бы вы сделали то же самое в коде?

Ответ №1:

Из документации UIView:

Фоны на основе изображений — для представлений, отображающих относительно статичный контент, рассмотрите возможность использования объекта UIImageView с распознавателями жестов вместо того, чтобы создавать подклассы и рисовать изображение самостоятельно. Кроме того, вы также можете использовать общий объект UIView и назначить свое изображение в качестве содержимого объекта CALayer представления.

Используя второй вариант, чтобы настроить someView так, чтобы у него был фон yourImage.png:

someView.layer.contents = (id)[[UIImage imageNamed:@"yourImage.png"] CGImage];

Ответ №2:

если под наложением UIView вы подразумеваете рисование его фона изображением, это можно сделать следующим образом:

 someView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"yourImage.png"]];
 

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

Комментарии:

1. Правильно, поскольку функция colorWithPatternImage является настраиваемым методом, эта опция не отображается в IB. на выбор доступны только отдельные цвета. хотя ту же задачу можно было бы выполнить с IB, создав UIImageView, который покрывает ваш вид и имеет тот же фрейм. если вы не хотите, чтобы ваш вид был закрыт или нет, вы можете просто установить для его свойства .hidden значение YES / NO .

2. Я бы, вероятно, выбрал этот UIImageView вариант, поскольку предполагаю, что он будет более оптимизирован, чем генерация шаблона, который затем придется рисовать Core Graphics после определения плитки и т. Д.