Установить фоновое изображение для всего приложения iPhone/iPad

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

Ответ 1

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

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

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

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

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

self.view.backgroundColor = [UIColor clearColor];

Ответ 2

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

Ответ 3

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

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

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

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

self.view.backgroundColor = [UIColor clearColor]; // = transparent

Ответ 4

В AppDelegate в

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

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

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

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

Ответ 5

Я не уверен в производительности, но мне нужно было что-то сделать, и в итоге я использовал UIImageView, который хорошо работает (в С#, но работает одинаково в 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);

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

Ответ 6

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

Ответ 7

Я обычно использую эту функцию, чтобы избежать совпадений с панелью навигации на 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];
}

Ответ 8

просто назовите это 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)
    }