2013-04-06 73 views
2

我想創建一個單元格爲我的tableview這樣的形象:的UIImage與左側的MonoTouch iPhone圓潤的邊角

enter image description here

正如你所看到的,在這個小區我有有一些cornerradius一個UIImage在它的左邊。我使用這個代碼添加cornerradius到我的UIImage:

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

但我不知道如何設置半徑只是爲了讓uiimage的一面。

我猜想另一種解決方案是改變uiimageview的方式,它的左角與單元格的角部相匹配(我在每個部分使用分組的表格寬度爲1行),因此會自動創建邊框。但是對於這種方式,我也不知道我應該怎麼做:-s。

我發現這個解決方案也Objective-C的。任何機構都可以幫助在monotouch iphone上使用它?

https://stackoverflow.com/a/4930166

+0

我認爲第二種解決方案是正確的解決方案。但我不知道這個:-S – 2013-04-06 10:16:58

回答

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); 

只要UIImageViewUIView子類,它應該是爲UIImageView過的作品。

Reference answer

+0

它工作正常。非常感謝你回答:) – 2013-04-08 07:27:45