A cross-platform UI framework for .NET
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

58 lines
1.9 KiB

using Avalonia.Media;
using CoreGraphics;
using UIKit;
namespace Avalonia.iOS
{
class AvaloniaRootViewController : UIViewController
{
private object _content;
private Color _statusBarColor = Colors.White;
public object Content
{
get { return _content; }
set
{
_content = value;
var view = (View as AvaloniaView);
if (view != null)
view.Content = value;
}
}
public Color StatusBarColor
{
get { return _statusBarColor; }
set
{
_statusBarColor = value;
var view = (View as AvaloniaView);
if (view != null)
view.BackgroundColor = value.ToUiColor();
}
}
void AutoFit()
{
var needFlip = !UIDevice.CurrentDevice.CheckSystemVersion(8, 0) &&
(InterfaceOrientation == UIInterfaceOrientation.LandscapeLeft
|| InterfaceOrientation == UIInterfaceOrientation.LandscapeRight);
// Bounds here (if top level) needs to correspond with the rendertarget
var frame = UIScreen.MainScreen.Bounds;
if (needFlip)
frame = new CGRect(frame.Y, frame.X, frame.Height, frame.Width);
((AvaloniaView) View).Padding =
new Thickness(0, UIApplication.SharedApplication.StatusBarFrame.Size.Height, 0, 0);
View.Frame = frame;
}
public override void LoadView()
{
View = new AvaloniaView() {Content = Content, BackgroundColor = _statusBarColor.ToUiColor()};
UIApplication.Notifications.ObserveDidChangeStatusBarOrientation(delegate { AutoFit(); });
UIApplication.Notifications.ObserveDidChangeStatusBarFrame(delegate { AutoFit(); });
AutoFit();
}
}
}