установить фоновое изображение для всего приложения iPhone / iPad - PullRequest
60 голосов
/ 06 февраля 2011

У меня есть одно изображение, которое я хочу использовать в качестве фона для моего приложения, независимо от того, на каком контроллере просмотра они находятся - как вы этого добиваетесь?

Ответы [ 8 ]

91 голосов
/ 06 февраля 2011

Вот как вы устанавливаете фон для изображения:

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

Редактировать: Чтобы записать, что сказал Феликсиз (и благодаря Манни), сделайте это в своемделегат:

window.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Background.png"]];

И в каждом представлении вы хотите иметь изображение, сделайте это:

self.view.backgroundColor = [UIColor clearColor];
8 голосов
/ 06 февраля 2011

Зависит от того, какой у вас интерфейс. Вкладки? Навигация на основе? Но общий ответ таков: добавьте UIImageView к вашему UIWindow перед / под вашим основным видом. Затем сделайте каждый вид, обрабатываемый вашим главным контроллером вида, прозрачным фоном. Трудно дать более конкретный совет, не зная, используете ли вы IB или нет, или как выглядит ваша иерархия представлений.

7 голосов
/ 12 декабря 2012

В вашем AppDelegate в

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

Добавить эту строку:

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

После того, как вам просто нужно установить фоны для ваших видов на [UIColor clearColor];

7 голосов
/ 06 февраля 2011

В моем приложении я установил цвет фона по умолчанию. Может быть, вы можете сделать это с вами фоновое изображение:

1 .: Установите цвет фона вашего UIWindow в вашем AppDelegate.

window.backgroundColor = [UIColor myBackgroundGray]; // own Category

2 .: А теперь сделайте все остальные виды прозрачными:

self.view.backgroundColor = [UIColor clearColor]; // = transparent
3 голосов
/ 30 мая 2014

Я не уверен в влиянии на производительность, но мне нужно было выполнить нечто подобное, и в итоге я использовал UIImageView, который хорошо работает (в C #, но работает так же в obj-c):

//Add the view controller first, to ensure proper order of views later.
Window.RootViewController = new UIViewController();

//create backdrop image view
var imageView = new UIImageView(Window.Bounds);
imageView.Image = UIImage.FromBundle("backdrop.jpg");

//insert into window.
Window.InsertSubview(imageView, 0);

Это не обрабатывает изменения ориентации, но в моем случае позволило мне добавить эффекты движения к фону (например, параллакс).

2 голосов
/ 19 июля 2011

Ваш фон является свойством любого объекта, наследующего View. Например, метки, кнопки, контроллеры и окно приложения имеют фон. Если вы хотите, чтобы он был полностью bg для всего приложения, вы должны пройти путь в своих контроллерах, чтобы найти самый «верхний» (просматриваемый снизу) вид, и установить его фон в качестве изображения, которое вы хотите.

1 голос
/ 12 июня 2016

просто позвоните по этому assignbackground в viewDidLoad

override func viewDidLoad() {
assignbackground()
}

func assignbackground(){
        let background = UIImage(named: "background")

        var imageview : UIImageView!
        imageview = UIImageView(frame: view.bounds)
        imageview.contentMode =  UIViewContentMode.ScaleAspectFill
        imageview.clipsToBounds = true
        imageview.image = background
        imageview.center = view.center
        view.addSubview(imageview)
        self.view.sendSubviewToBack(imageview)
    }
0 голосов
/ 26 июня 2015

Я обычно использую эту функцию, чтобы избежать совпадений с панелью навигации на iphone.

-(void)setImageBackground:(NSString*)imageName{
    UINavigationController* navigationController = [self navigationController];
    float height = navigationController.toolbar.frame.size.height;
    CGSize size = self.view.frame.size;
    size.height = size.height;
    UIGraphicsBeginImageContext(size);
    CGRect bounds = self.view.bounds;
    bounds.origin.y = bounds.origin.y + height;
    bounds.size.height = bounds.size.height-height;
    [[UIImage imageNamed:imageName] drawInRect:bounds];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    self.view.backgroundColor = [UIColor colorWithPatternImage:image];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...