Как центрировать изображение панели навигации [Swift] - PullRequest
0 голосов
/ 26 ноября 2018

в моем проекте у меня есть панель навигации с кнопкой для открытия слайд-меню.Теперь я пытаюсь установить изображение заголовка вместо строки заголовка.Маловероятно, что изображение слегка сдвигается вправо, а не центрируется.Я думал, что это из-за кнопки слайд-меню в левом углу панели навигации.Если я установлю заголовок в main.storyboard, все будет выглядеть правильно.Почему это так, что мое изображение не будет в центре.

Функция изображения:

func addNavBarImage() {

    let navController = navigationController!

    let image = UIImage(named: "TransparentLogo")
    let imageView = UIImageView(image: image)

    let bannerWidth = navController.navigationBar.frame.size.width
    let bannerHeight = navController.navigationBar.frame.size.height

    let bannerX = bannerWidth - image!.size.width
    let bannerY = bannerHeight - image!.size.height
    imageView.frame = CGRect(x: bannerX, y: bannerY, width: bannerWidth, height: bannerHeight)
    imageView.contentMode = .scaleAspectFit

    navigationItem.titleView = imageView
}

Функция кнопки:

func addSlideMenuButton(){
    let btnShowMenu = UIButton(type: UIButton.ButtonType.system)
    btnShowMenu.setImage(self.defaultMenuImage(), for: UIControl.State())
    btnShowMenu.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
    btnShowMenu.addTarget(self, action: #selector(BaseViewController.onSlideMenuButtonPressed(_:)), for: UIControl.Event.touchUpInside)
    btnShowMenu.tintColor = UIColor(red: 3, green: 49, blue: 79)
    let customBarItem = UIBarButtonItem(customView: btnShowMenu)
    self.navigationItem.leftBarButtonItem = customBarItem;

}

1 Ответ

0 голосов
/ 26 ноября 2018

Измените рамку вашего titleView в func addNavBarImage() следующим образом: -

func addNavBarImage() {

let navController = navigationController!

let image = UIImage(named: "TransparentLogo")
let imageView = UIImageView(image: image)

let bannerWidth = navController.navigationBar.frame.size.width
let bannerHeight = navController.navigationBar.frame.size.height

let bannerX = bannerWidth - image!.size.width
let bannerY = bannerHeight - image!.size.height
imageView.frame = CGRect(x: bannerX, y: bannerY, width: bannerWidth, height: bannerHeight)
imageView.contentMode = .scaleAspectFit

navigationItem.titleView = imageView
}

на это

func addNavBarImage() {
let imageView = UIImageView(image: #imageLiteral(resourceName: "TransparentLogo"))
imageView.frame = CGRect(x: 0, y: 0, width: 170, height: 30)
imageView.contentMode = .scaleAspectFit

let titleView = UIView(frame: CGRect(x: 0, y: 0, width: 170, height: 30))

titleView.addSubview(imageView)
titleView.backgroundColor = .clear
self.navigationItem.titleView = titleView
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...