gpt4 book ai didi

ios - 如何在中心显示具有自定义大小的模态视图 Controller ?

转载 作者:技术小花猫 更新时间:2023-10-29 11:22:36 39 4
gpt4 key购买 nike

我想从底部展示一个带有动画的自定义大小的模态视图 Controller 。我可以使用 ModalPresentationStyleFormSheet 实现此动画,但是 it forces me to use the default size which is 540x620我的观点不符合。

如何对放置在屏幕中央的任意大小的 View ( Controller )执行类似的转换?

最佳答案

我没有找到从模态 Controller 本身做到这一点的方法,所以我创建了一个类和一个扩展方法:

public class ModalViewController : UIViewController
{
public SizeF OriginalViewSize { get; private set; }

void Initialize ()
{
ModalPresentationStyle = UIModalPresentationStyle.FormSheet;
}

public override void ViewDidLoad ()
{
OriginalViewSize = View.Bounds.Size;
base.ViewDidLoad ();
}

public ModalViewController (IntPtr handle) : base (handle)
{
Initialize ();
}

public ModalViewController (string nibName, NSBundle bundle) : base (nibName, bundle)
{
Initialize ();
}

public ModalViewController () : base ()
{
Initialize ();
}
}

public static class ModalViewControllerExtensions
{
public static void PresentModalViewController (this UIViewController parent, ModalViewController target)
{
parent.PresentViewController (target, true, null);

target.View.Superview.AutoresizingMask = UIViewAutoresizing.FlexibleMargins;
target.View.Superview.Frame = new RectangleF (PointF.Empty, target.OriginalViewSize);
target.View.Superview.Center = UIScreen.MainScreen.Bounds.Center ().Rotate ();
}
}

我大致是这样使用的:

this.PresentModalViewController (
new PublishModalViewController (Item, HandlePublishAction)
);

我不需要显式指定大小很方便,因为它使用界面生成器中的 Root View 边界。我不确定这对自动旋转有何 react ,它可能需要一些调整。我在这里也使用了两种扩展方法:

public static PointF Rotate (this PointF pt)
{
return new PointF (pt.Y, pt.X);
}

public static PointF Center (this RectangleF rect)
{
return new PointF (
(rect.Right - rect.Left) / 2.0f,
(rect.Bottom - rect.Top) / 2.0f
);
}

就是这样。

关于ios - 如何在中心显示具有自定义大小的模态视图 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14048301/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com