Xamarin.Forms ScrollView增加了额外的空间

时间:2019-04-26 07:32:15

标签: c# xaml xamarin xamarin.forms scrollview

我的ScrollView在我的iPhone X的第一个孩子上方和最后一个孩子下方添加了额外的空间。这是该图像上方的蓝色空白。没有填充或边距。

enter image description here

我给ScrollView设置了蓝色背景,以更好地查看其尺寸。 如果我删除ScrollView,间距也消失了。这是我正在使用的代码

touchmove

这可能是错误,还是iOS状态栏渲染导致的? 我的UWP项目也没有间距

2 个答案:

答案 0 :(得分:2)

第1行丢失

更改此

<animatedViews:SavannahCanvasView HorizontalOptions="Center" Grid.Row="0" />
    <Grid Grid.Row="2" BackgroundColor="#fbc531">

对此

<animatedViews:SavannahCanvasView HorizontalOptions="Center" Grid.Row="0" />
    <Grid Grid.Row="1" BackgroundColor="#fbc531">`

答案 1 :(得分:1)

在iOS 11之后,滚动视图中添加了一个名为contentInsetAdjustmentBehavior的属性。

来自document

  

此属性指定如何使用安全区域插图进行修改   滚动视图的内容区域。

因此,您需要使用custom renderer来配置此属性:

在代码隐藏中:

public class myScrollView : ScrollView {

}

在自定义渲染器中:

[assembly: ExportRenderer(typeof(myScrollView), typeof(MyScrollviewRender))]

namespace App308.iOS
{
    class MyScrollviewRender : ScrollViewRenderer
    {
        protected override void OnElementChanged(VisualElementChangedEventArgs e)
        {
            base.OnElementChanged(e);

            if (e.OldElement != null || Element == null)
            {
                return;
            }

            if (UIDevice.CurrentDevice.CheckSystemVersion(11, 0))
            {
                this.ContentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentBehavior.Never;
            }
        }
    }
}

在Xaml中:

  <local:myScrollView>
        <!-- The MenuItems -->
        <Grid x:Name="myGrid" RowSpacing="0"
                  ColumnSpacing="0"
                  Margin="0, 0, 0, 0">

            ....
        </Grid>
    </local:myScrollView>

引用:uiscrollviewcontentinsetadjustmentbehavior

custom-renderer