停止Xamarin.Forms中的IOS弹跳

时间:2019-02-07 19:18:54

标签: c# ios xaml xamarin.forms

我正在Xamarin.Form中创建应用程序,而我在Xamarin中是新手。在IOS中,当滚动到顶部时,应用程序会反弹。无论如何,有没有停止滚动弹跳?

我尝试运行CSS文件,但没有运行。

2 个答案:

答案 0 :(得分:2)

在iOS上有一个专用的属性。这是AlwaysBounceVertical。与此相关的还有一些属性。

但是,Forms不直接支持设置这些属性,因此您需要创建一个自定义渲染器或相等的渲染器。看看这个:

using NoBounceiOS.iOS;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

[assembly: ExportRenderer(typeof(ListView), typeof(NoBounceRenderer))]
namespace NoBounceiOS.iOS
{
    public class NoBounceRenderer : ListViewRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<ListView> e)
        {
            base.OnElementChanged(e);

            if (Control != null)
            {
                Control.AlwaysBounceVertical = false;
            }
        }
    }
}

答案 1 :(得分:0)

原因::在iOS的Xamarin.forms中,UITableView具有某些属性(表单中的列表视图)。

@property(nonatomic)  BOOL  bounces;                  // default YES. if YES, bounces past edge of content and back again

@property(nonatomic)  BOOL  alwaysBounceVertical;     // default NO. if YES and bounces is YES, even if content is smaller than bounds, allow drag vertically

@property(nonatomic)  BOOL  alwaysBounceHorizontal;   // default NO. if YES and bounces is YES, even if content is smaller than bounds, allow drag horizontally

因此,仅将AlwaysBounceVertical设置为false无效。您应将bounces设置为false。

解决方案: 正如@Gerald Versluis所说,您可以使用CustomRenderer。

public class MyListViewRenderer:ListViewRenderer
{
    public MyListViewRenderer()
    {

    }

    protected override void OnElementChanged(ElementChangedEventArgs<ListView> e)
    {
        base.OnElementChanged(e);

        if(Control!=null)
        {
            Control.Bounces = false;
        }


    }
}