Добавление фонового изображения в контроллер вида
Я попытался использовать этот код в моем делегате приложения, чтобы добавить PNG-изображение в качестве фона контроллера вида:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[self window] setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]];
return YES;
}
но мне не повезло с этим... контроллер вида по-прежнему имеет белый фон. Что не так с этим кодом?
8 ответов
вам нужно установить фон для представления Вашего ViewController
в вашем ViewController init
или viewDidLoad
:
[self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]];
принятый ответ и ответ Майкла будут работать, однако, правильный способ - использовать 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];
вот как это в swift:
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor(patternImage: UIImage(named: "background.png"))
}
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)
}
в viewDidLoad я использую:
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"yourImageString.png"]];
альтернативно, если вы хотите сделать это в appDelegate, я думаю, что это возможно
[self.window setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"yourImageString.png"]]];
затем в viewDidLoad установите фон в [UIColor clearColor] ?
Если ваш контроллер вида имеет представление tableView / collection, приведенный ниже код подойдет для вас.
- (void)viewDidLoad
{
[super viewDidLoad];
self.tableView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourImage.png"]];
}
вы можете рассмотреть следующее решение, которое я использую в 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)
результатом будет следующее изображение
вы можете сделать это в раскадровке.
добавьте UIImageView и просто установите фоновое изображение для свойства Image в Инспекторе атрибутов.