Xamarin.Forms如何调整iOS / Android原生元素(自动)高度/宽度?

时间:2018-04-08 22:09:40

标签: ios xamarin.forms cross-platform custom-renderer

这是一个普遍的问题和具体问题。 一般用途 - 了解XF如何工作,特别是 - 用于我的自定义控件。

所以,问题是我应该将元素(由XF为特定系统(iOS或Android)生成)放入custom renderer内的某个自定义位置。

简而言之,它将XF控件嵌入到本机界面中,更详细地说,我需要将控件放入自定义警报/弹出窗口。 问题是元素(视图)的最终大小可能与最初生成的XF大小不同。 所以我需要进一步调整它们(例如,适合父视图边界(同样,父大小是自定义的,通常依赖于平台和屏幕大小)。)

让我们说,我有:

    <controls:AlertPanel 
        HorizontalOptions="FillAndExpand"
        VerticalOptions="FillAndExpand">

其中AlertPanel是:

    public class AlertPanel : Frame

在自定义渲染器内(适用于iOS的AlertPanel):

    // container is my native (manually created) view
    container.AddSubview(this); 

this是渲染器类(基本上从UIView继承)。

但如果我在IsVisible属性设置为true时执行此操作(并且动态创建(或至少定位)整个UI控件块),则通过以下方式设置边界:

    this.Frame = new CGRect(...);

......并没有很好地反映出我的期望。

当我将应用(例如)10 ms 延迟后,效果会好得多,但是,这不是一个好方法,也不清楚这一切都有效。

另外,我还没有发现任何约束应用于XF生成的视图,因此我认为边界是严格定义或动态计算的。

任何线索?

0 个答案:

没有答案