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.
 
 
 

55 lines
1.5 KiB

using System;
using Avalonia.Controls.Platform;
using Avalonia.Media;
namespace Avalonia.iOS;
internal class InsetsManager : InsetsManagerBase
{
private IAvaloniaViewController? _controller;
private bool _displayEdgeToEdge = true;
internal void InitWithController(IAvaloniaViewController controller)
{
_controller = controller;
if (_controller is not null)
{
_controller.SafeAreaPaddingChanged += (_, _) =>
{
OnSafeAreaChanged(new SafeAreaChangedArgs(SafeAreaPadding));
DisplayEdgeToEdgeChanged?.Invoke(this, _displayEdgeToEdge);
};
}
}
public override bool? IsSystemBarVisible
{
get => _controller?.PrefersStatusBarHidden == false;
set
{
if (_controller is not null)
{
_controller.PrefersStatusBarHidden = value == false;
}
}
}
public event EventHandler<bool>? DisplayEdgeToEdgeChanged;
public override bool DisplayEdgeToEdgePreference
{
get => _displayEdgeToEdge;
set
{
if (_displayEdgeToEdge != value)
{
_displayEdgeToEdge = value;
DisplayEdgeToEdgeChanged?.Invoke(this, value);
OnSafeAreaChanged(new SafeAreaChangedArgs(SafeAreaPadding));
}
}
}
public override Thickness SafeAreaPadding => _displayEdgeToEdge ? _controller?.SafeAreaPadding ?? default : default;
public override Color? SystemBarColor { get; set; }
}