Domanda

Vorrei sapere per fare un UIPopoverController senza frecce In realtà vorrei simulare qualcosa di simile: Schermata dello schermo set-codice di accesso da Preferenze di Sistema del iPad

Vedere che

  • Non ci sono frecce

  • C'è un titolo che è in qualche modo all'interno di un bordo superiore allargata del UIPopoverController e non all'interno di esso come nel UIPopoverController normale.

Suppongo che questo non è davvero un oggetto UIPopoverController ma Gradirei consigli su come posso fare lo stesso effetto (utilizzando CoreGraphics -?> Specialmente l'effetto traslucido degrado del confine eccezionale 3D) e / o link ad alcune fonti, se qualcuno ha fatto prima.

Grazie in anticipo.

Ignacio

EDIT:

Sono ancora alla ricerca di questa roba e si rese conto che anche in applicazioni di terze parti in uso un esempio è: Twitterrific per iPad come si vede in questa foto. Qualcuno per favore? Mettere il titolo all'interno della popovercontroller è proprio brutto. alt text

È stato utile?

Soluzione

Mentre v'è una certa domanda circa se Apple approverà applicazioni che creano un popover senza freccia, si potrebbe voler controllare questo frecce post per quanto riguarda e questo post per quanto riguarda vista modale .

Altri suggerimenti

Il sotto metodo di bene per me funziona (includere iOS7)

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

Passo 0 all'attributo permittedArrowDirections.

[popoverController presentPopoverFromRect:YOUR_RECT
                                    inView:self.view 
                  permittedArrowDirections:0
                                  animated:YES];

Per creare una popover con un titolo è necessario creare una vista separata come si farebbe fare una finestra separata e quindi caricare quella vista nel popover.

Il bordo superiore è prodotto ponendo un controller di navigazione tra il popover e il controller della vista presentato.

In altre parole, i regali popover un controller di navigazione e controller della vista principale del controller di navigazione è impostato per il vostro controller della vista. Questo produce la barra del titolo e consente di impostare il titolo con [self setTitle:@"My Title"] e aggiungere pulsanti di navigazione.

È possibile aggiungere un titolo utilizzando un UINavigationController, e l'aggiunta di UIViewControllers per il controller di navigazione. Impostare l'attributo 'titolo' della UIViewController per far apparire il titolo.

Impostazione della direzione della freccia per NULL, come qualcuno ha suggerito, può causare un comportamento imprevedibile, dal momento che il metodo utilizza questa variabile per capire come orientare il popup relativo al vostro articolo pulsante della barra o un rettangolo.

E 'meglio sottoclasse UIPopoverBackgroundView, ed impostare i vari metodi freccia di ritorno per restituire 0 per le frecce (iOS5 e soltanto). Vedere questo esempio per sapere come sottoclasse correttamente questo:

http://blog.teamtreehouse.com/customizing-the-design- di-uipopovercontroller

esempio di implementazione semplice (MyCustomPopoverBGView è la sottoclasse di UIPopoverBackgroundView in questo esempio):

UIViewController *vCtrlr = [[UIViewController alloc] initWithNibName:nil bundle:nil];
vCtrlr.title = @"My Title";
self.navCtrlr = [[UINavigationController alloc] initWithRootViewController:vCtrlr];
self.popCtrlr = [[UIPopoverController alloc] initWithContentViewController:_navCtrlr];
_popCtrlr.popoverBackgroundViewClass = [MyCustomPopoverBGView class];
            [_popCtrlr presentPopoverFromRect:CGRectMake(0,
                                                         0,
                                                         320,
                                                         150)
                                       inView:self permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

Basta copiare e incollare il codice sottostante

UIViewController *popovercontroller=[[UIViewController alloc] init];
UIView *popoverView=[[UIView alloc] initWithFrame:CGRectMake(312,390, 400, 344)];
popoverView.backgroundColor=[UIColor whiteColor];

popovercontroller.contentSizeForViewInPopover=CGSizeMake(400, 300);



UIDatePicker *pickerView = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 44, 400, 0)];
[pickerView setTintColor:[UIColor blackColor]];
[pickerView addTarget:self action:@selector(dueDateChanged:) forControlEvents:UIControlEventValueChanged];

pickerView.datePickerMode = UIDatePickerModeDate;
pickerView.hidden = NO;
NSString *bs ; //= [NSString alloc];
//    //NSDate *newDate = [NSData alloc];
bs =  CurrentSelectedDate;
if (bs.length >= 1) {
    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init] ;
    //        //[dateFormatter setDateStyle:NSDateFormatterLongStyle];
    //        [dateFormatter setTimeStyle:NSDateFormatterNoStyle];
    [dateFormatter setDateFormat:@"dd-MMM-yyyy"];
    // NSDate *myDate = [dateFormatter dateFromString: txtText.text];
    pickerView.date = [dateFormatter dateFromString: CurrentSelectedDate];

}
else
{
    pickerView.date = [NSDate date];
}
[popoverView addSubview:pickerView];



// pickerView.date = [dateFormatter dateFromString:txtText.text];
UIToolbar *pickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 400, 44)];
pickerToolbar.barStyle = UIBarStyleDefault;
pickerToolbar.barTintColor=[UIColor colorWithRed:150.0f/255.0f green:91.0f/255.0f blue:129.0f/255.0f alpha:1.0f];

[pickerToolbar sizeToFit];
self.navigationController.toolbar.barTintColor = [UIColor colorWithRed:150.0f/255.0f green:91.0f/255.0f blue:129.0f/255.0f alpha:1.0f];
NSMutableArray *barItems = [[NSMutableArray alloc] init];

UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:self action:nil];
[barItems addObject:flexSpace];

UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneButtonPressed:)];
doneBtn.tintColor=[UIColor whiteColor];
[barItems addObject:doneBtn];

UIBarButtonItem *cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelButtonPressed:)];
 cancelBtn.tintColor=[UIColor whiteColor];
[barItems addObject:cancelBtn];

[pickerToolbar setItems:barItems animated:YES];


[popoverView addSubview:pickerToolbar];
popovercontroller.view=popoverView;

pickerViewPopup = [[UIPopoverController alloc] initWithContentViewController:popovercontroller];

[pickerViewPopup presentPopoverFromRect:CGRectMake(312, 212, 400, 344) inView:self.view permittedArrowDirections:0 animated:YES];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top