Вы можете рассчитать размер необходимого контента future (contentView
), сравнить его с вашим порогом и задать направление стрелки. вам может потребоваться поэкспериментировать с вашим порогом, поскольку размер представления контента не соответствует всей высоте всплывающего окна.
int popoverArrowDirection 15;//any
int threshold = 300;
if(viewThatWillbeInserted.frame.size.height>threshold)popoverArrowDirection = 1;//up
[myPopoverController presentPopoverFromBarButtonItem:myBarButton permittedArrowDirections:popoverArrowDirection animated:YES];
Если вы не можете знать эту высоту раньше, у вас не так много вариантов.
Ограничения всплывающих окон заставили меня смоделировать всплывающее окно как Custom ViewController (например, всплывающее окно для страниц, которое вы видите, когда скользите по страницам в ibook; это не настоящий компонент всплывающего окна). Это означало бы, что если бы у вас была стрелка вниз и вы открыли новый, более крупный вид, вы могли бы даже анимировать вид, вращающийся вокруг источника наконечника стрелки или любой другой глупой анимации.
Я делал это только в корпоративных приложениях, и не уверен, что это безопасно для магазина приложений!