UIPoover zonder pijlen

Is het mogelijk om een ​​popover te presenteren zonder dat er pijlen naar ergens wijzen?


Antwoord 1, autoriteit 100%

Ja, het is mogelijk, doe gewoon:

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

De nul staat voor geen richting.


Antwoord 2, autoriteit 23%

Probeer deze voor iPhone en swift 2.0

Code om popover te starten

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

En voeg dit toe aan uw ViewController

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

Antwoord 3, autoriteit 15%

Swift4:

popover.permittedArrowDirections = []              

Antwoord 4, autoriteit 10%

Stel de permittedArrowDirectionsin op 0.

permittedArrowDirections:0

Code –

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

Nul vertelt “NoDirection”.


Antwoord 5, autoriteit 8%

Swift3, deze code werkt voor mij

popover.permittedArrowDirections = .init(rawValue: 0)

Antwoord 6, autoriteit 5%

Voor Swift 2.0en iOS9is de oplossing:

popoverViewController?.permittedArrowDirections = UIPopoverArrowDirection()

Antwoord 7, autoriteit 5%

In Swift kunt u eenvoudig het volgende doen:

popoverPresentationController.permittedArrowDirections = []

Omdat je in een andere configuratie had kunnen gebruiken:

popoverPresentationController.permittedArrowDirections = [.up, .down]

Antwoord 8, autoriteit 4%

Probeer dit, het werkt voor mij.

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

Antwoord 9, autoriteit 4%

In swift 3 kun je hiervoor een UIPopoverArrowDirection-extensie bouwen:

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

en wat je kunt doen:

popoverPresentationController!.permittedArrowDirections = .noArrow

Antwoord 10, autoriteit 3%

Dit werkt prima voor mij.

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

Geniet van coderen.


Antwoord 11, autoriteit 3%

In mijn geval voor snelle ontwikkelaars

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

Antwoord 12, autoriteit 2%

Nee, er is geen optie UIPopoverArrowDirectionNone, en UIPopoverArrowDirectionUnknowngenereert een uitzondering, denk ik, als je die probeert te gebruiken om te presenteren.

In plaats van een popover-controller, kun je presentModalViewController:animated:aanroepen en de controller die je presenteert instellen op een modale presentatiestijl van UIModalPresentationFormSheetof misschien UIModalPresentationPageSheet. Dat zijn meer traditionele pop-upschermen dan popovers.


Antwoord 13, autoriteit 2%

Gebruik geen popovers als u geen pijlen wilt weergeven. Presenteer uw viewcontroller als een Modal en gebruik in plaats daarvan een UIModalPresentationFormSheet.

Voorbeeld:

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

Antwoord 14

Probeer deze eens

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

Antwoord 15

Ik gebruik popover om het menu weer te geven, afhankelijk van de aanraakcoördinaat.
In dit geval gebruikt popover de maximale hoogte van self.view

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

Maar als ik de 0-richting gebruik. Popover-rechthoek stelt de hoogte niet in op maximum en kan alleen worden ingesteld door de juiste eigenschap.

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

Hopelijk helpt dit: Hulp bij de grootte van de UIPopOverController


Antwoord 16

Om een ​​pop over de richting none te maken en deze in het midden van de weergavecontroller te laten verschijnen:

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

Antwoord 17

Een eenvoudige oplossing in SWIFT:

popover!.permittedArrowDirections = nil

Other episodes