переместить левый и правый barButtonItem панели навигации вертикально вверх

Я пытаюсь переместить левую и правую панель навигации barButtonItem вверх по вертикали, но безуспешно. Мне удается переместить вид заголовка вверх, но использование того же метода для barButtonItem ничего не делает.

Эффект, которого я пытаюсь достичь, - это то, что используется на странице закладок сафари:

введите здесь описание изображения

Я надеюсь добиться этого без какого-либо подкласса navigationBar, чтобы я мог поддерживать прозрачность.

Мой подход состоял в том, чтобы добавить UIView в панель навигации непосредственно в IB для leftBarButtonItem, Title и rightBarButtonItem. Это отлично работает для заголовка, и я могу добавить заголовок и segmentedControl. Проблема в том, что когда я добавляю левый и правый элементы barButtonItem, я не могу перемещать их по вертикали над моим сегментированным элементом управления. Я использую следующий код, чтобы попытаться переместить barButtonItem вертикально в viewDidLoad():

    self.navigationItem.rightBarButtonItem?.setBackgroundVerticalPositionAdjustment(-15, for: UIBarMetrics.defaultPrompt)

    self.navigationItem.rightBarButtonItem?.setBackgroundVerticalPositionAdjustment(-15, for: UIBarMetrics.compactPrompt)

person alionthego    schedule 25.05.2017    source источник
comment
Это может помочь - я не работал с этим, но похоже, что в нем обсуждается именно то, что вы пытаетесь сделать: emdentec.com/blog/2014/2/25/hacking-uinavigationbar   -  person DonMag    schedule 25.05.2017
comment
спасибо за ссылку. там они подклассифицируют navigationBar, и это довольно хакерское решение. надеялся, что будет более простой способ сделать это.   -  person alionthego    schedule 25.05.2017
comment
Хм... только что нашел другую ссылку, которая может быть гораздо лучшим маршрутом (по крайней мере, это образец Apple, так что чего стоит...): developer.apple.com/library/content/samplecode/NavBar/   -  person DonMag    schedule 25.05.2017
comment
Проверьте этот пост stackoverflow.com/questions/40316352/   -  person Joe    schedule 25.05.2017