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

时间:2020-07-30 22:33:23

标签: xamarin xamarin.forms xamarin.ios

我将不同的元素,控件和视图包裹在框架中以应用转角半径,这在Android上工作正常。但是在iOS方面,即使框架是圆角的,其内容也不会裁剪到其半径,而是保持正方形,就像什么都没有应用一样。

示例:-

<Frame BackgroundColor="{DynamicResource Theme}" CornerRadius="15" Padding="0">
    <Image Source="{Binding PImage}" HeightRequest="132.5" Aspect="AspectFill"/>
</Frame>

预期(在Android中会发生这种情况):-

Expected Result

实际:-

Actual Result

如何像Android中那样使框架内容尊重拐角半径?

2 个答案:

答案 0 :(得分:1)

将框架的内容剪切到其边界:

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

https://stackoverflow.com/a/55611485/1039935

enter image description here

答案 1 :(得分:0)

从共享代码中可以在我的本地站点工作:

enter image description here

示例解决方案:检查 Visual Studio Xamarin Forms 的版本。确保已将其更新为最新版本。 ( Visual Studio:16.6.5,Xamarin Forms:4.7.0.1239 )。

否则,您可以在iOS中创建一个Custom Frame Renderer来设置CornerRadius

创建 CustomFrame

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;

    }
}

Xaml 中,使用自定义渲染器:

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