2016-04-15 3 views
2

Я был в тупике о том, как получить изображение в навигационной панели, которая выровнена влево. Я понимаю, как заменить название в центре.Добавление логотипа в панель навигации, выравнивание по левому краю

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

Ниже приведено то, что я понимаю, как разместить изображение, но как я могу его выравнивать влево?

let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 50, height: 50)) 
imageView.contentMode = .ScaleAspectFit 
let image = UIImage(named: "imageName") 
imageView.image = image 
navigationItem.titleView = imageView 

ответ

8

Вы можете присвоить массив элементов в leftBarButtonItems имущество navigationBar. Вы должны добавить массив, потому что между левой стороной и логотипом обычно нет места, и это не выглядит великолепно. Вот пример:

func setUpUI() { 
    let logoImage = UIImage.init(named: "logoImage") 
    let logoImageView = UIImageView.init(image: logoImage) 
    logoImageView.frame = CGRectMake(-40, 0, 150, 25) 
    logoImageView.contentMode = .ScaleAspectFit 
    let imageItem = UIBarButtonItem.init(customView: logoImageView) 
    let negativeSpacer = UIBarButtonItem.init(barButtonSystemItem: .FixedSpace, target: nil, action: nil) 
    negativeSpacer.width = -25 
    navigationItem.leftBarButtonItems = [negativeSpacer, imageItem] 
} 

Отрицательная распорка слева от него будет толкать его на немного, и вы можете настроить его оттуда.

+0

Это потрясающе. Работала отлично. Отрицательная прокладка была отличной идеей. Спасибо! – kelsheikh

0

Создать элемент BarButton с изображением.

Назначьте его как элемент с левым баром для панели навигации следующим образом.

Objective C

UIBarButtonItem *logo = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:"imageName"] style:UIBarButtonItemStylePlain target:self action:@selector(methodName)]; 

self.navigationItem.leftBarButtonItem = logo; 

СВИФТА

let logo = UIBarButtonItem(image: UIImage (named: "imageName"), style: UIBarButtonItemStyle.plain, target: self, action: methodName) 

self.navigationItem.leftBarButtonItem = logo 

Надеется, что это помогает ..

+0

В примере Objective-C, не должно быть стиля UIBarButtonItemStylePlain ...? –

+0

Да @JoshB Обновленный ответ выше. –

2

Для прошивки 11 нам нужно добавить ограничения к просмотру изображения в BarButtomItem

func addLeftBarIcon(named:String) { 

    let logoImage = UIImage.init(named: named) 
    let logoImageView = UIImageView.init(image: logoImage) 
    logoImageView.frame = CGRect(x:0.0,y:0.0, width:60,height:25.0) 
    logoImageView.contentMode = .scaleAspectFit 
    let imageItem = UIBarButtonItem.init(customView: logoImageView) 
    let widthConstraint = logoImageView.widthAnchor.constraint(equalToConstant: 60) 
    let heightConstraint = logoImageView.heightAnchor.constraint(equalToConstant: 25) 
    heightConstraint.isActive = true 
    widthConstraint.isActive = true 
    navigationItem.leftBarButtonItem = imageItem 
} 

Все лучшее

Смежные вопросы