2013-09-10 3 views
12

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

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

    return YES; 
} 

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

+3

с помощью этого кода вы добавили фоновое изображение в свое окно не ко всем viewControllers. –

+0

Попробуйте следующее: http://stackoverflow.com/questions/2991040/uiviewcontroller-with-background-image – jntme

ответ

24

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

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

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

если я использую этот код, я получаю утечки памяти, как исправить это – codercat

1

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

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

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

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

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

33

Принятый ответ и ответ Майкла будет работать, однако, правильный способ заключается в использовании 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]; 
+0

, это должен быть принятый ответ !! Благодарю. – Umitk

+0

Да, это должен быть принятый ответ !! Большое спасибо! – jastrada

+0

Учитывая изменения ориентации (портрет и пейзаж), вы должны установить рамку 'UIImageView' в' viewDidLayoutSubviews'. –

1

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

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

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

Вот как это в стрижа:

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

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

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

1

вы можете рассмотреть следующее решение, которое я использую в 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) 

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

enter image description here

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) 
} 
Смежные вопросы