ich selbst ich eine Klasse und eine Erweiterungsmethode so nicht einen Weg, es zu tun aus dem modalen Controller finden erstellt:
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();
}
}
Diese grob ist, wie ich es verwenden:
this.PresentModalViewController (
new PublishModalViewController (Item, HandlePublishAction)
);
Es ist praktisch, dass ich die Größe nicht explizit angeben muss, da sie die Grenzen von Root View vom Interface Builder verwendet. Ich bin mir nicht sicher, wie das auf Autorotate reagiert. Ich verwende auch zwei Erweiterungsmethoden hier:
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
);
}
Und das ist es.
Quiet brilliant ... –
Das sieht nicht wie irgendein iOS-Code aus, den ich gesehen habe. Können Sie dies bitte ausführlicher/tatsächliches Beispiel zeigen? – iOSProgrammingIsFun
@iOSProgrammingIsFun Diese Frage hat einen MonoTouch-Tag (jetzt als [Xamarin.iOS] (http://xamarin.com/ios) gebrandmarkt). Es ist eine Plattform, um in C# gegen Apples APIs zu schreiben. –