在 iOS 的 iphone 和 iPad 中显示 UI PopViewController 中心

Posted

技术标签:

【中文标题】在 iOS 的 iphone 和 iPad 中显示 UI PopViewController 中心【英文标题】:Display UIPopViewController center in iphone and iPad in iOS 【发布时间】:2018-05-14 05:28:27 【问题描述】:

我正在开发 Xamarin.ios,我想在 iphone 和 iPad 的中心屏幕中显示 UIPopViewController。下面我尝试代码的方式:

public override void ViewDidLoad()

    base.ViewDidLoad();

    showButton.TouchUpInside += (sender, e) => 
    // Create a UIImage view to show in the popover
    UIImageView monkeyIcon = new UIImageView(new CGRect(20, 20, 200, 200));
    monkeyIcon.Image = UIImage.FromFile("Abc.png");
    monkeyIcon.UserInteractionEnabled = true;

    // Create a view controller to act as the popover
    UIViewController popover = new UIViewController();
    popover.View = monkeyIcon;
    popover.ModalPresentationStyle = UIModalPresentationStyle.Popover;

    // Grab Image
    var image = UIImage.FromFile("298-circlex.png");

    // Add a close button
    var closeButton = new UIButton(new CGRect(0, 20, 200, 200));
    closeButton.UserInteractionEnabled = true;
    closeButton.SetTitle("Close", UIControlState.Normal);
    monkeyIcon.AddSubview(closeButton);

    // Wireup the close button
    closeButton.TouchUpInside += (button, e2) => 
         popover.DismissViewController(true, null);
    ;

    // Present the popover
    PresentViewController(popover, true, null);

    // Configure the popover for the iPad, the popover displays as a modal view on the
    //iPhone
    UIPopoverPresentationController presentationPopover = popover.PopoverPresentationController;
    if (presentationPopover != null)
    
        presentationPopover.SourceView = this.View;
        presentationPopover.PermittedArrowDirections = 0;
        presentationPopover.SourceRect = showButton.Frame;
        presentationPopover.Delegate = this;
     
   ;


        [Export("adaptivePresentationStyleForPresentationController:")]
        public UIModalPresentationStyle GetAdaptivePresentationStyle(UIPresentationController forPresentationController)
        
            return UIModalPresentationStyle.None;
        

        public override void DidReceiveMemoryWarning()
        
            base.DidReceiveMemoryWarning();
            // Release any cached data, images, etc that aren't in use.
        

我尝试了 SO 和 google 中的所有答案,但对我没有任何帮助。

问题 1: - 在 Iphone 中,PopViewController 正在全屏显示,但我想居中并缩小 PopView。

问题 2: - 在 Ipad 中,PopViewController 显示在 LeftSide 我想将其显示在中心。

我们将不胜感激。

【问题讨论】:

您好,它解决了您的问题吗? 【参考方案1】:

如果您不希望此PopoverPresentationController 全屏显示,则应为其所有者控制器设置大小:popover.PreferredContentSize = new CGSize(200, 200);。此外,您应该先设置PopoverPresentationController 的配置,然后再提交popover

在 Ipad 中,PopViewController 显示在我想要的左侧 将其显示在中心。

SourceRect 表示指定视图中用于锚定弹出框的矩形。您想在中心显示此弹出窗口,请将其设置为您的 View.Frame。这是我的代码供您参考:

UIPopoverPresentationController presentationPopover = popover.PopoverPresentationController;
if (presentationPopover != null)

    presentationPopover.SourceView = this.View;
    presentationPopover.PermittedArrowDirections = 0;
    presentationPopover.SourceRect = View.Frame;
    //Configure this Delegate first before presenting.
    presentationPopover.Delegate = this;


PresentViewController(popover, true, null);

【讨论】:

以上是关于在 iOS 的 iphone 和 iPad 中显示 UI PopViewController 中心的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iPhone/iPad/iOS 上显示临时弹出消息

SVG sprite 未在 ios iphone ipad 上显示

发布的应用在应用商店中显示与 iPad 兼容,但仅针对 iPhone 编译

iOS 智能应用横幅 - 在 iPad 上显示,而不是在 iPhone 上

图像不显示在带有 iOS 9 的 iPad 2 模拟器上

ipad ios 5.1 中的界面方向问题