Domanda

E 'possibile presentare una popover senza alcun tipo di frecce che puntano da qualche parte?

È stato utile?

Soluzione

Sì, è possibile solo fare:

 [self.popoverController presentPopoverFromBarButtonItem:anItem   
                                permittedArrowDirections:0
                                                animated:YES];

Lo zero rappresentano nessuna direzione.

Altri suggerimenti

Per iPhone e rapido 2.0 provare questo

Codice per avviare 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)
}

E aggiungere questo al tuo ViewController

func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
    return UIModalPresentationStyle.None
}

Impostare il permittedArrowDirections a 0.

permittedArrowDirections:0

Codice -

[self.popoverController presentPopoverFromBarButtonItem:anItem   
                                permittedArrowDirections:0
                                                animated:YES];

Zero dice "NoDirection".

Swift3 , questo lavoro di codice per me

popover.permittedArrowDirections = .init(rawValue: 0)

Swift 2.0 e iOS9 la soluzione è:

popoverViewController?.permittedArrowDirections = UIPopoverArrowDirection()

Prova questo, per me funziona.

[self.popoverViewController presentPopoverFromRect:rect inView:self.view  permittedArrowDirections:0 animated:YES];

Swift4 :

popover.permittedArrowDirections = []              

Questo funziona bene per me.

[popoverController presentPopoverFromRect:CGRectMake(0, 0, 20, 20)
                                    inView:self.view 
                  permittedArrowDirections:NULL 
                                  animated:YES];

Godere di codifica.

No, non esiste alcuna opzione UIPopoverArrowDirectionNone, e UIPopoverArrowDirectionUnknown genera un'eccezione Penso che se si tenta di utilizzare che per oggi.

Al posto di un controller popover, è possibile chiamare presentModalViewController:animated: e impostare il controller che si sta presentando ad avere uno stile di presentazione modale del UIModalPresentationFormSheet o forse UIModalPresentationPageSheet. Quelli sono schermate pop-up più tradizionali di popovers sono.

Nel mio caso per gli sviluppatori rapidi

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);

In rapida 3, è possibile costruire un'estensione UIPopoverArrowDirection per questo:

extension UIPopoverArrowDirection {
    public static var noArrow: UIPopoverArrowDirection {
        return UIPopoverArrowDirection(rawValue: 0)
    }
}

e si può fare:

popoverPresentationController!.permittedArrowDirections = .noArrow

In Swift, si può semplicemente fare:

popoverPresentationController.permittedArrowDirections = []

Dato che in un'altra configurazione si potrebbe avere utilizzato:

popoverPresentationController.permittedArrowDirections = [.up, .down]

Prova questo

[popOverController presentPopoverFromRect:CGRectMake(0, 0, 30, 40) inView:popOverContentView permittedArrowDirections:0 animated:NO];

Non utilizzare Popovers se non si desidera visualizzare le frecce. Presentate la vostra controller di vista come un modale e utilizzare un UIModalPresentationFormSheet invece.

Esempio:

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MyStoryBoard" bundle:nil];
UIViewController* viewController = [sb instantiateViewControllerWithIdentifier:@"myViewController"];
viewController.modalPresentationStyle = UIModalPresentationFormSheet;
[presenterViewController presentViewController: viewController animated:YES completion:^{

}];

Io uso popover a show menu a seconda del tocco di coordinate. In questo caso popover utilizza altezza massima di self.view

CGRect popeverFrame = CGRectMake(touchPoint.x, touchPoint.y, 0, 0);
[self.popover presentPopoverFromRect:popeverFrame
                              inView:self.view
            permittedArrowDirections:UIPopoverArrowDirectionAny
                            animated:YES];

Ma quando uso 0-direzione. Popover rettangolo non impostarla altezza massima e può essere impostato solo da proprietà appropriata.

CGRect popeverFrame = CGRectMake(touchPoint.x, touchPoint.y, 0, 0);
[self.popover presentPopoverFromRect:popeverFrame
                              inView:self.view
            permittedArrowDirections:UIPopoverArrowDirectionAny
                            animated:YES];

Spero che questo vi aiuterà: con dimensioni UIPopOverController

Per fare un pop sopra direzione nessuno e farla apparire nel centro del controller della vista:

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()

Una soluzione semplice a SWIFT:

popover!.permittedArrowDirections = nil
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top