在 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 中心的主要内容,如果未能解决你的问题,请参考以下文章
SVG sprite 未在 ios iphone ipad 上显示
发布的应用在应用商店中显示与 iPad 兼容,但仅针对 iPhone 编译