我想为我的tableview创建一个像这个图像的单元格:
正如你所看到的,在这个单元格中,我有一个左侧有一个角半径的UIImage。我使用此代码将cornerradius添加到我的UIImage:
ThumbnailImg .Layer .CornerRadius = 7.0f;
ThumbnailImg .Layer .MasksToBounds = true ;
但是我不知道如何设置半径只是为了让uiimage的一面。
我猜的另一个解决方案是改变uiimageview,使其左角与单元格的角相匹配(我在每个部分使用分组表格宽度为1行),因此边框将自动创建。但是对于这种方式,我也不知道我应该做些什么:-s。
我也找到了针对objective-c的解决方案。任何人都可以帮助在monotouch iphone上使用它吗?
答案 0 :(得分: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
。