UIPopoverな矢印
-
25-09-2019 - |
質問
ことは可能でにpopoverなく矢を指すか?
解決
はい、それだけで行うことも可能です。
[self.popoverController presentPopoverFromBarButtonItem:anItem
permittedArrowDirections:0
animated:YES];
ゼロには方向を表していない。
他のヒント
これを試してみてください
コードを開始するためのポップオーバー
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)
}
そして、あなたのViewControllerにこれを追加します。
func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
return UIModalPresentationStyle.None
}
0にpermittedArrowDirections
を設定します。
permittedArrowDirections:0
コード -
[self.popoverController presentPopoverFromBarButtonItem:anItem
permittedArrowDirections:0
animated:YES];
ゼロ "NoDirection" を伝えます。
Swift3, このコードを作っ
popover.permittedArrowDirections = .init(rawValue: 0)
のための Swift 2.0
とiOS9
のソリューションがあります:
popoverViewController?.permittedArrowDirections = UIPopoverArrowDirection()
はこれを試してみてください、それは私のために動作します。
[self.popoverViewController presentPopoverFromRect:rect inView:self.view permittedArrowDirections:0 animated:YES];
Swift4:
popover.permittedArrowDirections = []
これは私のために罰金を働きます。
[popoverController presentPopoverFromRect:CGRectMake(0, 0, 20, 20)
inView:self.view
permittedArrowDirections:NULL
animated:YES];
コーディングお楽しみいただけます。
いやが、何のUIPopoverArrowDirectionNone
オプションはありません、そしてあなたがその存在に使用しようとするとUIPopoverArrowDirectionUnknown
は私が考える例外をスローします。
代わりにポップオーバーコントローラの、あなたはpresentModalViewController:animated:
を呼び出し、あなたがUIModalPresentationFormSheet
または多分UIModalPresentationPageSheet
のモーダルプレゼンテーションスタイルを持っているために提示されているコントローラを設定することができます。それらはpopoversであるよりも、より伝統的なポップアップ画面です。
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);
SWIFT 3では、あなたは、このためにUIPopoverArrowDirection
拡張を構築することができます
extension UIPopoverArrowDirection {
public static var noArrow: UIPopoverArrowDirection {
return UIPopoverArrowDirection(rawValue: 0)
}
}
、あなたが行うことができます:
popoverPresentationController!.permittedArrowDirections = .noArrow
でスウィフト、あなたは、単に行うことができます:
popoverPresentationController.permittedArrowDirections = []
別の構成では、あなたが使用している可能性がありますのでます:
popoverPresentationController.permittedArrowDirections = [.up, .down]
この方法を試してください。
[popOverController presentPopoverFromRect:CGRectMake(0, 0, 30, 40) inView:popOverContentView permittedArrowDirections:0 animated:NO];
DoがPopoversを使用していません。モーダルとしてあなたのビューコントローラを提示し、代わりにUIModalPresentationFormSheetを使用しています。
例:
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MyStoryBoard" bundle:nil];
UIViewController* viewController = [sb instantiateViewControllerWithIdentifier:@"myViewController"];
viewController.modalPresentationStyle = UIModalPresentationFormSheet;
[presenterViewController presentViewController: viewController animated:YES completion:^{
}];
私は、タッチ座標に応じたメニューを表示するためにポップオーバーを使用しています。 この場合、ポップオーバーはself.viewの最大高さを使用する
CGRect popeverFrame = CGRectMake(touchPoint.x, touchPoint.y, 0, 0);
[self.popover presentPopoverFromRect:popeverFrame
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
しかし、私は0方向を使用する場合。ポップオーバー矩形が最大にそれに高さを設定しないとのみ適切なプロパティで設定することができる。
CGRect popeverFrame = CGRectMake(touchPoint.x, touchPoint.y, 0, 0);
[self.popover presentPopoverFromRect:popeverFrame
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
・ホープ、この意志のヘルプ:UIPopOverControllerサイズとヘルプに
方向なしの上にポップを作り、それがビューコントローラの中央に表示されるようにするために
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()
SWIFTでシンプルなソリューション:
popover!.permittedArrowDirections = nil