2

我想为我的表格视图创建一个单元格,如下图所示:

在此处输入图像描述

如您所见,在这个单元格中,我有一个 UIImage,它的左侧有一些圆角半径。我使用此代码将cornerradius添加到我的UIImage:

    ThumbnailImg .Layer .CornerRadius = 7.0f;
ThumbnailImg .Layer .MasksToBounds = true ;

但我不知道如何为 uiimage 的 let 设置半径。

我猜的另一个解决方案是更改 uiimageview,使其左角与单元格的角匹配(我在每个部分中使用分组表宽度 1 行),因此边框将自动创建。但是对于这种方式,我也不知道我应该做什么:-s。

我也为objective-c找到了这个解决方案。任何人都可以帮助在 monotouch iphone 上使用它吗?

https://stackoverflow.com/a/4930166

4

1 回答 1

2

子类UIImageView以允许它通过UIBezierPath.

示例UIView

public class UIViewCustomRounded: UIView
{
    // Inspired by:
    // https://stackoverflow.com/questions/4847163/round-two-corners-in-uiview
    // https://stackoverflow.com/questions/2264083/rounded-uiview-using-calayers-only-some-corners-how/
    public UIViewCustomRounded (): base()
    {
    }

    /// <summary>
    /// Sets the corners.
    /// </summary>
    /// <param name="corners">Corners.</param>
    /// <param name="cornerRadius">Corner radius.</param>
    public void SetCorners(UIRectCorner corners, float cornerRadius)
    {
        var maskLayer = new CAShapeLayer();
        maskLayer.Frame = Bounds;
        var roundedPath = UIBezierPath.FromRoundedRect(maskLayer.Bounds, corners, new SizeF(cornerRadius, cornerRadius));
//          maskLayer.FillColor = UIColor.White.CGColor;
//          maskLayer.BackgroundColor = UIColor.Clear.CGColor;
        maskLayer.Path = roundedPath.CGPath;

        //Don't add masks to layers already in the hierarchy!
        Layer.Mask = maskLayer;
    }
}

用法:

var a = new UIViewCustomRounded()
// Don't forget to set frame and add it as subview
a.SetCorners(UIRectCorner.BottomLeft | UIRectCorner.BottomRight, 10);

只要UIImageView是 的子类UIView,它也应该适用UIImageView

参考答案

于 2013-04-08T07:12:42.433 回答