14

矢印なしで UIPopoverController を作成する方法を知りたい実際には、次のようなものをシミュレートしたいと思います。 iPad のシステム環境設定のパスコード設定画面のスクリーンショット

それを参照してください

  • 矢はない

  • 通常の UIPopoverController のように、UIPopoverController の拡張された上部境界線の内側ではなく、何らかの形でその内側にあるタイトルがあります。

これは実際には UIPopoverController オブジェクトではないと思いますが、同じ効果をどのように作成できるか (CoreGraphics を使用しますか? -> 特に 3D 未処理境界線の半透明劣化効果) および/または誰かが行った場合はいくつかのソースへのリンクについてアドバイスをいただければ幸いです。この前。

前もって感謝します。

イグナシオ

編集:

私はまだこのようなものを探していて、サードパーティのアプリでさえ使用されていることに気付きました: この写真に見られるように、iPad 用の twitterrific です。どなたかお願いします。popovercontroller 内にタイトルを配置するのは見苦しいです。 代替テキスト

4

7 に答える 7

20

以下の方法は私にとってはうまくいきます(iOS7を含む)

 [popoverController presentPopoverFromRect:CGRectMake(0, 0, 20, 20)
                                    inView:self.view 
                  permittedArrowDirections:NULL 
                                  animated:YES];
于 2012-10-03T11:01:06.693 に答える
5

Pass 0 to permittedArrowDirections attribute.

[popoverController presentPopoverFromRect:YOUR_RECT
                                    inView:self.view 
                  permittedArrowDirections:0
                                  animated:YES];
于 2014-07-04T06:46:06.217 に答える
4

矢印のないポップオーバーを作成するアプリを Apple が承認するかどうかについては疑問がありますが、矢印に関するこの記事とモーダル ビューに関するこの記事を確認してください。

于 2010-10-02T23:17:57.920 に答える
1

上部の境界線は、ポップオーバーと表示されたビューコントローラーの間にナビゲーションコントローラーを配置することによって作成されます。

つまり、ポップオーバーはナビゲーションコントローラーを表し、ナビゲーションコントローラーのルートビューコントローラーはビューコントローラーに設定されます。これにより、タイトルバーが生成され、ナビゲーションボタンを使用してタイトルを設定し[self setTitle:@"My Title"]たり、ナビゲーションボタンを追加したりできます。

于 2013-03-20T23:42:10.947 に答える
1

タイトル付きのポップオーバーを作成するには、別のウィンドウを作成し、そのビューをポップオーバーにロードするように、別のビューを作成する必要があります。

于 2011-05-24T13:28:57.727 に答える
1

UINavigationController を使用し、UIViewControllers をナビゲーション コントローラーに追加することで、タイトルを追加できます。タイトルを表示するには、UIViewController の「title」属性を設定します。

一部の人が示唆しているように、矢印の方向を NULL に設定すると、予期しない動作が発生する可能性があります。これは、メソッドがこの変数を使用して、バー ボタン項目または四角形に対してポップアップをどのように配置するかを判断するためです。

UIPopoverBackgroundView をサブクラス化し、矢印に対して 0 を返すようにさまざまな矢印戻りメソッドを設定することをお勧めします (iOS5 以降のみ)。これを適切にサブクラス化する方法については、次の例を参照してください。

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

簡単な実装例 (MyCustomPopoverBGView は、この例では UIPopoverBackgroundView のサブクラスです):

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];
于 2013-06-15T08:02:34.277 に答える
0

以下のコードをコピーして貼り付けるだけです

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];
于 2014-04-02T06:52:30.710 に答える