UINavigationBar пользовательское фоновое изображение - PullRequest
4 голосов
/ 14 июня 2011

Я использовал эти предлагаемые решения , чтобы придать моему UINavigationBar собственное изображение. (Чтобы сделать это более явным: я добавил категорию в UINavigationBar в моем файле AppDelegate.m). До сих пор это работало нормально, и у меня не было никаких проблем. Однако теперь я запускал свое приложение на последней бета-версии iOS5. UINavigationBar теперь снова пуст.

Поскольку все остальные установленные мной приложения, использующие пользовательский образ, по-прежнему ведут себя одинаково, в моем коде должно быть что-то «неправильное», я думаю, что iOS5 теперь больше не поддерживает.

Так кто-нибудь имеет представление о том, что может быть проблемой с моим принятием вышеупомянутых решений?

Единственный способ заставить его работать - создать реальный подкласс UINavigationBar, а затем во всех представлениях указать IB использовать этот пользовательский класс. Хотя не так элегантно ...

Ответы [ 4 ]

4 голосов
/ 15 октября 2011

Для поддержки обеих версий вам нужно спросить, есть ли setBackgroundImage: forBarMetrics: метод.

Посмотрите на мой блог об этом: http://www.mladjanantic.com/setting-custom-background-for-uinavigationbar-what-will-work-on-ios5-and-ios4-too/

1 голос
/ 16 марта 2013

Используйте этот код

        UIImage *backgroundImage = [UIImage imageNamed:@"strip.png"];
        [upnavbar setBackgroundImage:backgroundImage forBarMetrics:UIBarMetricsDefault];

это будет работать.

1 голос
/ 14 июня 2011

Еще одно возможное «хакерское» решение - создать собственное представление и вставить его в UINavigationBar в качестве подвида - возможно, оно все равно будет работать:

UIView *backgroundView = ...
[navigationBar insertSubview:backgroundView atIndex:0];

Или проверить обновленную ссылку на класс UINavigationBar в документах iOS5.для встроенного метода для установки собственного фона

0 голосов
/ 16 октября 2011

Это сработало для меня на панели инструментов

//toolBar background image set based on iOS version
    [[UIDevice currentDevice] systemVersion];

    if ([[[UIDevice currentDevice] systemVersion] floatValue] > 4.9) {

        //iOS 5
        UIImage *toolBarIMG = [UIImage imageNamed: @"toolBar_brown.png"];  

        if ([toolBar respondsToSelector:@selector(setBackgroundImage:forToolbarPosition:barMetrics:)]) { 
            [toolBar setBackgroundImage:toolBarIMG forToolbarPosition:0 barMetrics:0]; 
        }

    } else {

        //iOS 4
        [toolBar insertSubview:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"toolBar_brown.png"]] autorelease] atIndex:0]; 

    }
...