ViewCellSizeChangedEvent

ViewCellSizeChangedEvent

我有一个使用自定义ViewCell和单选按钮的自定义ListView。单击每个单选按钮后,ListView会动态调整其高度以隐藏/显示注释框。

在iOS平台上使用ForceUpdateSize时,单击单选按钮会使ListView性能迅速降低。该应用程序最终会挂起并停止响应。

是否有替代解决方案可用来代替ForceUpdateSize在运行时动态扩展ListView行?

最佳答案

在需要更改ViewCell大小的任何地方定义一个ViewCell Size Change事件

public static event Action ViewCellSizeChangedEvent;

就您而言,它应该由您的单选按钮触发。这样称呼它:
ViewCellSizeChangedEvent?.Invoke();

然后,它将使用ListView渲染器更新iOS TableView。
public class CustomListViewRenderer : ListViewRenderer
{
    public CustomListViewRenderer()
    {
        WhatEverContentView.ViewCellSizeChangedEvent += UpdateTableView;
    }

    private void UpdateTableView()
    {
        var tv = Control as UITableView;
        if (tv == null) return;
        tv.BeginUpdates();
        tv.EndUpdates();
    }
}

它可以解决您的性能问题,同时继续使用Xaml,而不是创建不需要的自定义ViewCell。

10-08 07:29