Как добавить изображение в UINavigationBar в приложении для iPhone - PullRequest
41 голосов
/ 11 января 2012

В моем приложении я хочу добавить изображение (логотип) в панель навигации. Я работаю на XCode 4.2 и iOS 5.

Я знаю, UINavigationBar, UIToolBar было изменено в iOS 5. Поэтому код iOS 4.2 UINavigationBar не будет работать в iOS 5.

Я хочу поддерживать отображение изображения в UINavigationBar как в версии 4.2, так и в версии 5.

Я хочу отображать изображение в UINavigationBar, как на скриншоте ниже.

Navigation bar image

Пожалуйста, помогите в этом отношении, и если есть какой-либо пример кода, это очень полезно для меня.

Спасибо !!!

Ответы [ 3 ]

78 голосов
/ 11 января 2012

Один из способов сделать это - использовать UINavigationItem.titleView и UINavigationItem.rightBarButtonItem.Например:

viewController.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourimage.png"]];
UIBarButtonItem * item = [[UIBarButtonItem alloc] initWithCustomView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourimage2.jpg"]]];    
viewController.navigationItem.rightBarButtonItem = item;    

Здесь я использую UIImageView в качестве пользовательского представления, но это может быть UIButton с настраиваемым изображением.

33 голосов
/ 29 июня 2012

Другой способ без использования viewController

// Create your image
UIImage *image = [UIImage imageNamed: @"logo.png"];
UIImageView *imageview = [[UIImageView alloc] initWithImage: image];

// set the image view to the title view
self.navigationItem.titleView = imageview;
4 голосов
/ 01 сентября 2016

Swift версия: Вы можете создать расширение протокола для использования функции в ваших контроллерах вида

protocol Customizable {
    var navigationItem: UINavigationItem { get }
}

extension Customizable {
    func setNavBarLogo() {

        let logo = UIImage(named: "logo")
        let logoImageView = UIImageView(image: logo)

        self.navigationItem.titleView = logoImageView
    }
}
...