どこかを指す矢印なしでポップオーバーを提示することは可能ですか?
17 に答える
はい、それは可能です:
[self.popoverController presentPopoverFromBarButtonItem:anItem
permittedArrowDirections:0
animated:YES];
ゼロは方向がないことを表します。
iPhoneとswift2.0の場合は、これを試してください
ポップオーバーを開始するコード
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
}
Swift4:
popover.permittedArrowDirections = []
permittedArrowDirections
を0に設定します。
permittedArrowDirections:0
コード-
[self.popoverController presentPopoverFromBarButtonItem:anItem
permittedArrowDirections:0
animated:YES];
ゼロは「NoDirection」を示します。
Swift3、このコードは私のために働きます
popover.permittedArrowDirections = .init(rawValue: 0)
の解決策は次のとおりですSwift 2.0
。iOS9
popoverViewController?.permittedArrowDirections = UIPopoverArrowDirection()
Swiftでは、次のことを簡単に行うことができます。
popoverPresentationController.permittedArrowDirections = []
別の構成では、次を使用できた可能性があります。
popoverPresentationController.permittedArrowDirections = [.up, .down]
これを試してみてください、それは私のために働きます。
[self.popoverViewController presentPopoverFromRect:rect inView:self.view permittedArrowDirections:0 animated:YES];
UIPopoverArrowDirection
swift 3では、このための拡張機能を構築できます。
extension UIPopoverArrowDirection {
public static var noArrow: UIPopoverArrowDirection {
return UIPopoverArrowDirection(rawValue: 0)
}
}
そしてあなたができること:
popoverPresentationController!.permittedArrowDirections = .noArrow
これは私にとってはうまくいきます。
[popoverController presentPopoverFromRect:CGRectMake(0, 0, 20, 20)
inView:self.view
permittedArrowDirections:NULL
animated:YES];
コーディングをお楽しみください。
私の場合、迅速な開発者向け
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);
いいえ、UIPopoverArrowDirectionNone
オプションはありませんUIPopoverArrowDirectionUnknown
。それを使用して提示しようとすると、例外がスローされます。
ポップオーバーコントローラーの代わりに、提示しているコントローラーを呼び出して、またはpresentModalViewController:animated:
のモーダルプレゼンテーションスタイルを持つように設定できます。これらは、ポップオーバーよりも伝統的なポップアップ画面です。UIModalPresentationFormSheet
UIModalPresentationPageSheet
矢印を表示したくない場合は、ポップオーバーを使用しないでください。ビューコントローラをモーダルとして提示し、代わりにUIModalPresentationFormSheetを使用します。
例:
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MyStoryBoard" bundle:nil];
UIViewController* viewController = [sb instantiateViewControllerWithIdentifier:@"myViewController"];
viewController.modalPresentationStyle = UIModalPresentationFormSheet;
[presenterViewController presentViewController: viewController animated:YES completion:^{
}];
これを試してみてください
[popOverController presentPopoverFromRect:CGRectMake(0, 0, 30, 40) inView:popOverContentView permittedArrowDirections:0 animated:NO];
タッチ座標に応じてメニューを表示するためにポップオーバーを使用します。この場合、ポップオーバーは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