Показать центр UIPopViewController в iphone и iPad в iOS - PullRequest
0 голосов
/ 14 мая 2018

Я работаю над Xamarin.iOS, я хочу отобразить UIPopViewController в iphone и iPad в центре экрана.Приведенный ниже способ я пробую код:

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 отображается в левой части, я хочу, чтобы он отображался по центру.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 15 мая 2018

Если вы не хотите, чтобы 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);
...