Изменить размер UIImage, чтобы соответствовать ширине устройства

Мне нужно разместить изображение в качестве фона в моем приложении Swift 3. Я установил фон с этим:

self.view.backgroundColor = UIColor(patternImage: UIImage(named: "bg_sunrise")!)

Есть ли способ убедиться, что изображение соответствует текущей ширине устройства и не масштабировано?

2 ответа

Решение

Это зависит от того, что вы действительно хотите.

  • Если вам нужно "подгонка аспекта", вам нужно либо перетащить изображение в UIImageView, как в emresancaktar. Проблема с этим - и с помощью использования backgroundColor представления вы предлагаете это - то, что вы хотите поместить вещи поверх упомянутого UIImageView. Это усложняет вещи.

  • Если вам просто нужно масштабировать до размера представления без учета "подгонки", вы можете использовать его слой:

    view.layer.contents = UIImage(named: "bg_sunrise")?.cgImage
    
  • Наконец, если вам нравится использовать слой представления, но вам нужно "подгонка аспекта", вам нужно будет работать с контекстом CGImage, возможно, используя метод UIImage.drawInRect() после выполнения некоторых вычислений. Быстрый поиск "CALayer Draw Image Fit Fit" дал понять эту суть. Это немного старый, но там есть версия Swift. Вы можете сделать то, что вам нужно, чтобы вернуть CALayer вместо UIImage.

Этот маленький фрагмент решит вашу проблему. Приятного кодирования.

var imageView : UIImageView
imageView = UIImageView(frame:CGRectMake(0, 0, 100, 70))
imageView.contentMode = .ScaleAspectFit
Другие вопросы по тегам