2010-12-08 11 views
5

私はUIBarButtonItemを使用しています。私のシナリオでは、そのバーボタンをダブルクリックすると、すべてのバーボタンからポップオーバーを表示したいと考えています。だから私はそのUIBarButtonItemからUITapGestureを使用します。しかし、Popoverの矢印は、常にすべてのUIBarButtonItemの中央に表示されます。UIPopoverの矢印の方向と位置を手動で設定する

各バーボタンの中央に矢印を表示させることはできません。私の友人は、ポイントを使って矢印の方向を設定するように指示していましたが、どうやってそれを行うのか分かりません。

どのようにしてポップオーバーの矢印の位置と方向を設定できますか?

[yourPopover setPopoverArrowDirection: UIPopoverArrowDirectionDown]; 

をあなたはまたUIPopoverArrowDirectionUpUIPopoverArrowDirectionLeft、およびUIPopoverArrowDirectionRight、およびUIPopoverArrowDirectionAnyを使用することができます。

+0

owhh..thankさんを... :) –

答えて

8

は使用してポップオーバーのための方向を設定します。

+0

は、私がその方向を知っている前に、私はそれを実現することはありませんが、私は変更したいわけ方向の位置..私はUIPopoverArrowDirectionUpを使用しますが、矢印の位置をX = 50、y = 100にしたいと思いますか? –

+0

これは数ヶ月前に私は本当に執念しました...残念なことに、あなたは矢印の位置を指定することはできません、uiipopoverが提示する矩形だけです。 –

+0

owh ..本当にありがとうございます... –

0

IBActionメソッドを使用している場合は、(id)senderをパラメータとして使用できます。 (呼び出しボタン)次に、ボタンのフレームにポップオーバーの添付矩形を設定することができます。矢印は、このフレームの側面に沿って適切な場所に取り付けられるように最善を尽くします。 UIPopoverController Class Referenceを参照してください。

-(IBAction)sortButtonPressed:(id)sender { 
    // Set up your popover class, this varies per your implementation 
    MyPopoverClass *iPop = [[MyPopoverClass alloc] initWithNibName:@"MyPopover" bundle:nil]; 
    UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:iPop]; 

    // Grab the button info from the input parameter 
    UIButton *button = (UIButton *)sender; 
    CGRect buttonRectangle = button.frame; 

    // Set the arrow direction 
    UIPopoverDirection dir = UIPopoverArrowDirectionAny; // Or Up, Down, etc. 

    // Put it all together 
    [popover presentPopoverFromRect:buttonRectangle inView:mySubView permittedArrowDirections:dir animated:YES]; 

    [popover release] 
    [iPop release]; 
} 

また、必要に応じてCGRectを手作業でハードコードすることもできます。長方形の幅/高さを縮小すると、矢印の位置をより厳密に制御できます。

12

私は方法を使用しています.ArrowDirections = .Down、それは私の仕事です。スウィフトの例:

if let popoverPresentationController = shareViewController.popoverPresentationController { 
    popoverPresentationController.permittedArrowDirections = .Down 
    popoverPresentationController.delegate = self 
    popoverPresentationController.sourceView = sender as! UIButton 
    popoverPresentationController.sourceRect = CGRectMake(0, 0, sender.frame.size.width, sender.frame.size.height) 
} 
+0

完璧、ありがとう! – Cmag

+2

'popController.popoverPresentationController?.sourceView = sender as?を使用できますか? UIView; popController.popoverPresentationController?.SourceRect = sender.bounds' – Cmag

0

Storyboard Segueの属性インスペクタで矢印の方向を設定できます。例えば、私は次のスクリーンショットにまで下矢印方向を設定します。 enter image description here

関連する問題