Подтвердить что ты не робот

UIPopover без каких-либо стрелок

Можно ли представить popover без каких-либо стрелок, указывающих где-нибудь?

4b9b3361

Ответ 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