带有填充和圆角的图标 - 适用于Xamarin Forms的iOS自定义渲染器

时间:2018-06-14 19:47:57

标签: ios xamarin.forms custom-renderer

我正在尝试创建一个带圆角的图像,并在图像周围添加5磅填充。我的角落工作,但图像,一个图标,占据了整个控制。我尝试过的一些事情是:

    public override void LayoutSubviews()
    {
        try
        {
            var element = (IconTile)Element;
            var textheight = element.HeightRequest / 3;

            Control.Layer.CornerRadius = 10;
            Control.Layer.BackgroundColor = HelperUtilities.GetColor(element.Item.BackgroundColor, Color.Transparent).ToCGColor();
            Control.ClipsToBounds = true;

            //Control.Image.Scale(new CGSize(element.WidthRequest - 10, element.HeightRequest - 10));
            Control.Image = Control.Image.ImageWithAlignmentRectInsets(new UIEdgeInsets(5, 5, 5, 5));
            Control.Frame = new CGRect(5, 5, element.Width - 10, element.Height - 10);
            Control.LayoutMargins = new UIEdgeInsets(5,5,5,5);
            Control.Image.DrawAsPatternInRect(new CGRect(5, 5, element.Width - 10, element.Height - 10));
            //UIGraphics.BeginImageContextWithOptions(new CGSize(element.WidthRequest - 40, element.HeightRequest - 40), false, 0f);
            base.LayoutSubviews();

在Android中,我可以使用

执行此操作
            child.SetPadding(20,20,20,20);
            var result = base.DrawChild(canvas, child, drawingTime);

我如何在iOS中执行此操作?

在iOS中我看起来应该可以通过在控件上设置Frame来实现这一点:

            CGSize size = Control.Image.Size;
            CGRect rect = new CGRect(0, 0, size.Width - 5, size.Height - 5);
            Control.Frame = rect;

取自https://stackoverflow.com/a/6435536/1181230。但现在图像大小调整到帧。是  这是表格中的错误吗?

1 个答案:

答案 0 :(得分:0)

我最终重写了TrySetImage并调用了我自己的SetImage,它使用框架创建了一个新的imageview。 我替换为:

res = df.iloc[:, s.index.map(df.columns.get_loc)]

具有:

            var imageView = Control;
            if (imageView != null)
                imageView.Image = uiimage;