Добавление фонового изображения в контроллер просмотра

Я попытался использовать этот код в моем делете приложения, чтобы добавить изображение PNG в качестве фона диспетчера вида:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [[self window] setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]];

    return YES;
}

но мне не повезло... контроллер просмотра все еще имеет белый фон. Что не так с этим кодом?

Ответ 1

Вам нужно установить фон для представления ViewController

В вашем ViewController init или viewDidLoad:

[self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]];

Ответ 2

Принятый ответ и ответ Майкла будут работать, однако правильный способ - использовать UIImageView. Это дает больший контроль над размерами, масштабированием и т.д. В зависимости от размеров экрана на устройствах. Вот пример:

Сначала создайте UIImage.

UIImage *backgroundImage = [UIImage imageNamed:@"iphone_skyline3.jpg"];

Вторые создают UIImageView. Установите размер кадра в качестве родительского (собственного) размера кадра. Это важно, так как размер кадра зависит от разных устройств. Растяжение будет происходить в зависимости от размера изображения. Затем назначьте изображение в представлении.

UIImageView *backgroundImageView=[[UIImageView alloc]initWithFrame:self.view.frame];
backgroundImageView.image=backgroundImage;

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

[self.view insertSubview:backgroundImageView atIndex:0];

Ответ 3

Вот как это быстро:

override func viewDidLoad() {
    super.viewDidLoad()
    self.view.backgroundColor = UIColor(patternImage: UIImage(named: "background.png"))
}

Ответ 4

Swift 4 версии ответа @hadaytullah с некоторыми улучшениями в настройках изображения:

override func viewDidLoad() {
    super.viewDidLoad()

    let backgroundImage = UIImage.init(named: "yourImageNameHere")
    let backgroundImageView = UIImageView.init(frame: self.view.frame)

    backgroundImageView.image = backgroundImage
    backgroundImageView.contentMode = .scaleAspectFill
    backgroundImageView.alpha = 0.1

    self.view.insertSubview(backgroundImageView, at: 0)
}

Ответ 5

В viewDidLoad я использую:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"yourImageString.png"]];

В качестве альтернативы, если вы хотите сделать это в appDelegate, я думаю, что его возможно

[self.window setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"yourImageString.png"]]];

Затем в viewDidLoad установите фон в [UIColor clearColor]?

Ответ 6

Если ваш контроллер просмотра имеет представление tableView/collection, нижеприведенный код вам подходит.

 - (void)viewDidLoad
{
   [super viewDidLoad];

   self.tableView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourImage.png"]];
}

Ответ 7

вы можете рассмотреть следующее решение, которое я использую в swift 3.0 и проверено в xcode 8

    // init and image with your pattern image
    var bgUIImage : UIImage = UIImage(named: "yourIamgeName")!
    let myInsets : UIEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0)
    bgUIImage = bgUIImage.resizableImage(withCapInsets: myInsets)
    self.view.backgroundColor = UIColor.init(patternImage:bgUIImage)

результатом будет следующее изображение

введите описание изображения здесь

Ответ 8

Вы можете сделать это из раскадровки.

Добавьте UIImageView и просто установите фоновое изображение для свойства Image в Инспекторе атрибутов.