non ho trovato un modo per farlo dal controller modale in sé così ho creato una classe e un metodo di estensione:
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();
}
}
Questo è più o meno come lo uso:
this.PresentModalViewController (
new PublishModalViewController (Item, HandlePublishAction)
);
È utile che non sia necessario specificare la dimensione in modo esplicito perché utilizza i limiti della vista radice dal generatore di interfacce. Non sono sicuro di come reagisce ad autorotazione, potrebbe essere necessario un po 'di messa a punto. Sto anche utilizzando due metodi di estensione qui:
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
);
}
E questo è tutto.
fonte
2012-12-27 01:23:07
Silenzioso brillante ... –
Non sembra un codice iOS che abbia mai visto. Potete per favore mostrarlo più in dettaglio/esempio reale? – iOSProgrammingIsFun
@iOSProgrammingIsFun Questa domanda ha il tag MonoTouch (ora marchiato come [Xamarin.iOS] (http://xamarin.com/ios)). È una piattaforma per scrivere in C# contro le API di Apple. –