2017-03-14 186 views
1

我添加了一個UIView。我有一個這樣的課UIView在UIView上繪製自定義的圓角矩形UIBezierPath

我想繪製一個圓角的矩形UIBezierPath它,但這是否意味着我必須重寫我的類中的drawRect爲UIView

我魔杖得出這樣的:

enter image description here

但我現在該怎麼畫一些簡單的圓角矩形,在我UIView類我將此FUNC:

func roundRect() 
{ 

let rectWidth:CGFloat = 100 
let rectHeight:CGFloat = 80 

let xf:CGFloat = (self.frame.width - rectWidth)/2 
let yf:CGFloat = (self.frame.height - rectHeight)/2 

let ctx: CGContext = UIGraphicsGetCurrentContext()! 
ctx.saveGState() 

let rect = CGRect(x: xf, y: yf, width: rectWidth, height: rectHeight) 
let clipPath: CGPath = UIBezierPath(roundedRect: rect, cornerRadius: rectCornerRadius).cgPath 

ctx.addPath(clipPath) 

ctx.closePath() 
ctx.fillPath() 
ctx.restoreGState() 
} 
+0

根據您的確切規格的路徑,使圖像與resizableImageWithCapInsets,或使用CAShapeLayer可能是一個更好的解決方案,然後重寫的drawRect。 –

回答

0

最簡單,最有效的方法在視圖中繪製簡單的形狀是向視圖添加CAShapeLayer。您可以將其添加爲視圖圖層的子圖層,也可以覆蓋該視圖的layerClass()方法以返回CAShapeLayer作爲視圖背景層的類。然後你會安裝想要抽入層的路徑屬性在視圖的layoutSubviews()方法