iOS 8 и более поздние версии
Начиная с iOS 8, вы можете использовать UIPopoverPresentationController
для iPhone в дополнение к iPad.

Настройка
- Добавьте
UIBarButtonItem
к основному контроллеру вида.
- Добавьте еще один View Controller к раскадровке. Измените его на размер, который вы хотите, чтобы поповер был, и добавьте любой контент, который вы хотите иметь. Для моего примера я просто добавил
UILabel
. Если вам нужно все меню, просто добавьте табличное представление или список кнопок.
- Добавьте переход от элемента панели кнопок к контроллеру вида, который вы будете использовать в качестве всплывающего окна. Вместо
show
выберите Present as Popover
.

- Выберите переход в раскадровке и установите идентификатор на
popoverSegue
(или любую строку, которую вы назвали в коде).

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

Код
Это код для контроллера основного вида, в котором есть элемент панели кнопок.
class ViewController: UIViewController, UIPopoverPresentationControllerDelegate {
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "popoverSegue" {
let popoverViewController = segue.destinationViewController
popoverViewController.modalPresentationStyle = UIModalPresentationStyle.Popover
popoverViewController.popoverPresentationController!.delegate = self
}
}
// MARK: - UIPopoverPresentationControllerDelegate method
func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
// Force popover style
return UIModalPresentationStyle.None
}
}
поповер в произвольной точке якорной
Если вы хотите, чтобы всплывающее окно появлялось где-то помимо элемента панели кнопок (например, на UIButton
), вам необходимо установить sourceView
и sourceRect
. Подробнее см. в этом ответе .

Дальнейшее чтение
Приведенный выше пример взят в основном из первой ссылки.