Можно ли представить popover без каких-либо стрелок, указывающих где-нибудь?
UIPopover без каких-либо стрелок
Ответ 1
Да можно просто сделать:
[self.popoverController presentPopoverFromBarButtonItem:anItem
permittedArrowDirections:0
animated:YES];
Ноль не указывает направление.
Ответ 2
Для iPhone и быстрого 2.0 попробуйте этот
Код для запуска popover
initiatePopover(){
let popoverContent = self.storyboard?.instantiateViewControllerWithIdentifier("XYZController") as! XYZController
let nav = UINavigationController(rootViewController: popoverContent)
nav.modalPresentationStyle = UIModalPresentationStyle.Popover
let popover = nav.popoverPresentationController
popoverContent.preferredContentSize = CGSizeMake(250 ,200)
popover!.delegate = self
popover!.sourceView = self.view
popover!.sourceRect = CGRectMake(200,200,0,0)
popover!.permittedArrowDirections = UIPopoverArrowDirection(rawValue: 0)
self.presentViewController(nav, animated: true, completion: nil)
}
И добавьте это в свой ViewController
func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
return UIModalPresentationStyle.None
}
Ответ 3
Установите permittedArrowDirections
в 0.
permittedArrowDirections:0
Код -
[self.popoverController presentPopoverFromBarButtonItem:anItem
permittedArrowDirections:0
animated:YES];
Zero указывает "NoDirection".
Ответ 4
Попробуй, это работает для меня.
[self.popoverViewController presentPopoverFromRect:rect inView:self.view permittedArrowDirections:0 animated:YES];
Ответ 5
Для Swift 2.0
и iOS9
решение:
popoverViewController?.permittedArrowDirections = UIPopoverArrowDirection()
Ответ 6
Swift3, этот код работает для меня
popover.permittedArrowDirections = .init(rawValue: 0)
Ответ 7
Это отлично работает для меня.
[popoverController presentPopoverFromRect:CGRectMake(0, 0, 20, 20)
inView:self.view
permittedArrowDirections:NULL
animated:YES];
Наслаждайтесь кодированием.
Ответ 8
Нет, нет опции UIPopoverArrowDirectionNone
, а UIPopoverArrowDirectionUnknown
генерирует исключение, которое я думаю, если вы попытаетесь использовать его для представления.
Вместо контроллера popover вы можете вызвать presentModalViewController:animated:
и установить для контроллера, который вы представляете, для модального стиля презентации UIModalPresentationFormSheet
или, возможно, UIModalPresentationPageSheet
. Это более традиционные всплывающие окна, чем popovers.
Ответ 9
Попробуйте этот
[popOverController presentPopoverFromRect:CGRectMake(0, 0, 30, 40) inView:popOverContentView permittedArrowDirections:0 animated:NO];
Ответ 10
Я использую popover для отображения меню в зависимости от координаты касания. В этом случае popover использует максимальную высоту self.view
CGRect popeverFrame = CGRectMake(touchPoint.x, touchPoint.y, 0, 0);
[self.popover presentPopoverFromRect:popeverFrame
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
Но когда я использую 0-направление. Прямоугольник Popover не устанавливает максимальную высоту и может быть установлен только соответствующим свойством.
CGRect popeverFrame = CGRectMake(touchPoint.x, touchPoint.y, 0, 0);
[self.popover presentPopoverFromRect:popeverFrame
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
Надеемся, что это поможет: Справка по размеру UIPopOverController
Ответ 11
Не используйте Popovers, если вы не хотите показывать стрелки. Представьте свой контроллер представления как Модаль и вместо этого используйте UIModalPresentationFormSheet.
Пример:
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MyStoryBoard" bundle:nil];
UIViewController* viewController = [sb instantiateViewControllerWithIdentifier:@"myViewController"];
viewController.modalPresentationStyle = UIModalPresentationFormSheet;
[presenterViewController presentViewController: viewController animated:YES completion:^{
}];
Ответ 12
В моем случае для быстрых разработчиков
popoverController.sourceView = self.view
popoverController.sourceRect = self.view.bounds
popoverController.backgroundColor = UIColor.brownColor()
popoverController.permittedArrowDirections = UIPopoverArrowDirection.init(rawValue: 0)
popoverController.sourceRect = CGRectMake(width/4, hieght/4, width/2, hieght/2);
Ответ 13
В быстрой версии 3 вы можете построить расширение UIPopoverArrowDirection
для этого:
extension UIPopoverArrowDirection {
public static var noArrow: UIPopoverArrowDirection {
return UIPopoverArrowDirection(rawValue: 0)
}
}
и вы можете сделать:
popoverPresentationController!.permittedArrowDirections = .noArrow
Ответ 14
Чтобы создать направление поцелуя none и заставить его появляться в центре контроллера вида:
let PopSrnVar = popoverPresentationController
let ConRctVar = view.frame
PopSrnVar!.sourceRect = CGRectMake(ConRctVar.width/4, ConRctVar.height/4, ConRctVar.width/2, ConRctVar.height/2)
// To make arrows as none
PopSrnVar!.permittedArrowDirections = UIPopoverArrowDirection()
Ответ 15
Простое решение в SWIFT:
popover!.permittedArrowDirections = nil