Xamarin 如何使框架内容尊重其角半径?

Xamarin 如何使框架内容尊重其角半径?,xamarin,xamarin.forms,xamarin.ios,Xamarin,Xamarin.forms,Xamarin.ios,我将不同的元素、控件和视图包装在框架中,以便应用角半径,这在Android上运行良好。但在iOS端,即使框架是圆角的,其内容也不会剪裁到其半径,而是保持方形,就好像没有应用任何内容一样 示例:- 预期(在Android中发生):- 实际:- 如何使框架内容与Android中的情况一样尊重角半径?将框架内容剪裁到其边界: <StackLayout Padding="30"> <Frame CornerRadius="30"

我将不同的元素、控件和视图包装在框架中,以便应用角半径,这在Android上运行良好。但在iOS端,即使框架是圆角的,其内容也不会剪裁到其半径,而是保持方形,就好像没有应用任何内容一样

示例:-


预期(在Android中发生):-

实际:-


如何使框架内容与Android中的情况一样尊重角半径?

将框架内容剪裁到其边界:

<StackLayout Padding="30">
    <Frame CornerRadius="30" Padding="0" IsClippedToBounds="True">
        <Image Source="https://aka.ms/campus.jpg" />
    </Frame>
</StackLayout>


来自我的本地站点中的共享代码:

示例解决方案:检查Visual StudioXamarin表单的版本。确保已更新到最新版本(Visual Studio:
16.6.5
,Xamarin表单:
4.7.0.1239

否则,您可以在iOS中创建一个来设置
拐角半径

创建自定义框架

public class CustomFrame: Frame
{
}
在iOS中创建自定义渲染器:

public class CustomFrameRenderer : FrameRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<Frame> e)
    {
        base.OnElementChanged(e);

        Layer.CornerRadius = Element.CornerRadius;
        //Layer.CornerRadius = 15;
        Layer.MasksToBounds = true;

    }
}
公共类CustomFrameRenderer:FrameRenderer
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
Layer.CornerRadius=Element.CornerRadius;
//层角半径=15;
Layer.MasksToBounds=true;
}
}
Xaml中,使用自定义渲染器:

<local:CustomFrame BackgroundColor="CadetBlue"
        Padding="0">
    <Image Source="XamarinLogo.png"
            HeightRequest="132.5"
            Aspect="AspectFill" />
</local:CustomFrame>


尝试设置帧的
高度请求
宽度请求
,而不是图像,同时尝试将帧的
填充
设置为1。如果之后仍然无法正常工作,请在StackLayout中包装框架。我尝试了所有方法,设置高度和宽度请求,在StackLayout中填充或包装框架。一切都不起作用。。。这真的很奇怪…这能回答你的问题吗?尽管它看起来很有希望,但在我尝试之后,同样的事情是,内容没有被剪辑…我对自定义渲染没有经验,所以有没有办法让自定义渲染只在ios上扩展常规帧元素而不使用自定义帧?@MohamedAshraf我不确定。我将检查这是否可能。你能分享一下Visual Studio和Xamarin Froms的版本吗?在最新版本中,共享代码也可以在iOS中使用。我正在使用最新的VS和Xamarin版本。。。但我真的不知道如何让它工作…@MohamedashrafOkey,这很奇怪。你能在这里分享一个示例项目链接吗?我想在我的本地网站上检查一下,看看会发生什么。