How to allow for iOS status bar and iPhone X notch in Xamarin.Forms

后端 未结 3 895
心在旅途
心在旅途 2021-01-02 19:48

I\'m fairly new to this, so sorry if this is a dumb question. How do I get my Xamarin.Forms app to start below the status bar or the notch when applicable? I\'ve tried using

3条回答
  •  攒了一身酷
    2021-01-02 20:50

    is it possible to make one thing on the screen expand all the way to the edges?

    (from this answer)

    Stretching elements out of the bounds of the safe area is arguably a use case in the case you provided. The bar is a mere background element and not content, as the navigation bar is, which also stretches to fill the whole screen.

    Having said that, you unfortunately don't get this for free, but have to implement this by yourself. Assume you have the following XAML

    
        
            
                
            
            
                
            
        
    
    

    In your code-behind (I would not use it like this, but to make the point it suffices. For a real application I have written a utility class, which is attached to the view and manages the insets.) you can now check for the property SafeAreaInsets being changed

    class SafeAreaPage : ContentPage
    {
        // elided constructor
    
        protected override void OnPropertyChanged(string propertyName)
        {
            if(propertyName = "SafeAreaInsets")
            {
                var insets = On.GetSafeAreaInsets();
    
                var headerInsets = insets; // Thickness is a value type
                headerInsets.Bottom = 0;
    
                var contentInsets = insets;
                contentInsets.Top = 0;
    
                Header.Padding = headerInsets;
                Content.Padding = contentInsets;
            }
        }
    }
    

    How you set the Paddings of your views depends on your layouts, but this way you have a bit more control on how the safe area insets are used, although it is a bit fiddly.

提交回复
热议问题