2010-10-02 5 views
14

Ich möchte wissen, eine UIPopoverController ohne Pfeile In der Tat würde ich so etwas simulieren mag: Screenshot of the set-passcode screen from the iPad's System PreferencesUIPopoverController ohne Pfeile?

Sehen Sie, dass

  • keine Pfeile Es

  • ist
  • Es ist ein Titel, der sich irgendwie innerhalb eines erweiterten oberen Rands des UIPopoverControllers befindet und nicht darin wie im normalen UIPopoverController.

Ich nehme an, das Objekt nicht wirklich ein UIPopoverController, aber ich würde Ratschläge zu schätzen weiß, wie kann ich den gleichen Effekt zu machen (Core Graphics mit -> speziell dem transluzente Verschlechterungseffekt der noch offenen Grenz 3D) und/oder Links zu einigen Quellen, wenn jemand dies schon einmal getan hat.

Vielen Dank im Voraus.

Ignacio

EDIT:

ich noch für dieses Zeug bin auf der Suche und erkennen, dass auch in Anwendungen von Drittanbietern ist ein Beispiel verwendet wird, ist: twitterrific für iPad, wie in diesem Bild zu sehen. Wer bitte? Das Einfügen des Titels in den Popover-Controller ist nur hässlich. alt text

Antwort

4

Zwar gibt es einige Frage ist, ob Apple-Apps genehmigen, die eine popover ohne einen Pfeil zu erstellen, könnten Sie diesen post regarding arrows und diese post regarding modal views prüfen wollen.

+0

Ich glaube nicht, dass es ein Problem gibt, wenn keine Pfeile dargestellt werden. Wie der Link, den Sie vorgeschlagen haben, ist die Option verfügbar? ;) Aber ich bekomme immer noch nicht, wie man einen Titel in den Popovercontroller wie in den gezeigten Bildern steckt. Ich habe versucht, UIViewController Titel Eigenschaft aber nicht funktioniert. – nacho4d

+0

Ich habe die Lösung hier gefunden: http://stackoverflow.com/questions/2617409/setting-the-title-of-a-uipopovercontroller – nacho4d

1

Um ein Popover mit einem Titel zu erstellen, müssen Sie eine separate Ansicht erstellen, als würden Sie ein separates Fenster erstellen und diese Ansicht dann im Popover laden.

19

Die folgenden Verfahren funktioniert gut für mich (umfassen iOS7)

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

+1, aber für MonoTouch, verwenden Sie Uint.MinValue anstelle von "NULL", um die zu entfernen Pfeil –

1

Die obere Grenze wird hergestellt, indem eine Navigationssteuerung zwischen dem popover Platzierung und dem präsentierten View-Controller.

Mit anderen Worten, das Popover stellt einen Navigationscontroller dar und der Root View-Controller des Navigationscontrollers ist auf den View-Controller eingestellt. Dadurch wird die Titelleiste erstellt und Sie können den Titel mit [self setTitle:@"My Title"] festlegen und Navigationsschaltflächen hinzufügen.

1

Sie können einen Titel hinzufügen, indem Sie einen UINavigationController verwenden und UIViewControllers zum Navigationscontroller hinzufügen. Setzen Sie das Attribut 'title' des UIViewControllers so, dass der Titel angezeigt wird. Die Einstellung der Pfeilrichtung auf NULL, wie einige vorgeschlagen haben, kann zu unvorhersehbarem Verhalten führen, da die Methode diese Variable verwendet, um herauszufinden, wie das Popup relativ zu Ihrem Balkenschaltflächenelement oder Rechteck ausgerichtet werden soll.

Es ist besser, UIPopoverBackgroundView von der Unterklasse zu trennen und die verschiedenen Rückgabemethoden für Pfeile auf 0 für die Pfeile (nur iOS5 und höher) zurückzusetzen.Sehen Sie dieses Beispiel dafür, wie diese richtig zu Unterklasse:

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

Einfache Implementierung Beispiel (MyCustomPopoverBGView ist die Unterklasse von UIPopoverBackgroundView in diesem Beispiel):

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]; 
0

Kopieren Sie einfach & den Code unten Einfügen

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]; 
4

Übergeben Sie 0 zu permittedArrowDirections Attribut.

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