2015-05-05 25 views
0

我有一個非常簡單的視圖控制器..UIBezierPath - byRoundingCorners - 矩形

import UIKit 

class ViewController: UIViewController { 

    let f = TstKocka(frame: CGRectMake(100,100, 150, 150)) 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     view.addSubview(f) 

    } 

} 

而且我有一個UIView類:

class TstKocka: UIView { 


    override init(frame: CGRect) { 
     super.init(frame: frame) 
    } 

    required init(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

    override func drawRect(rect: CGRect) { 

     var path = UIBezierPath(roundedRect: rect, byRoundingCorners: UIRectCorner.AllCorners, cornerRadii: CGSize(width: 2.0, height: 2.0)) 

     path.lineWidth = 1.0 
     path.stroke() 

    } 

} 

而且我想創建一個圓角的矩形,但我不知道該怎麼辦。我讀過很多教程,但沒有一本適合我,請幫助我。

+0

嘗試提供你是如何試圖創建一個圓角的矩形的例子。還提供您注意到的任何錯誤或其他副作用。這些簡單的步驟將大大改善問題。 – YoYo

回答

1

因爲你沒有提供填充顏色我猜你的矩形應該有一個清晰的顏色。使這項工作改變你的initwithframe以下幾點:

override init(frame: CGRect) { 
    super.init(frame: frame) 
    opaque = false 
} 

然後增加cornerradii值(20.0,20.0爲例),看看它的作品! :)

編輯

填充實際上是撫摸簡單:

let path = UIBezierPath(roundedRect: rect, byRoundingCorners: UIRectCorner.AllCorners, cornerRadii: CGSize(width: 20.0, height: 20.0)) 
path.lineWidth = 1.0 

UIColor.blueColor().setFill() // or whatever fill color you like 
path.fill() 

UIColor.redColor().setStroke() 
path.stroke() 
+0

沒有這條線:opaque = false我的矩形是全黑的,我看不到在角落有任何圓角。現在我添加了這行,就像你寫的,它正在工作,我可以看到四捨五入的角落!謝謝。但是,我怎麼能用任何顏色填充我的矩形,然後四捨五入? :) – solarenqu

+0

非常感謝你! :) – solarenqu

0

如果你想創建一個圓角的矩形認爲剪輯的內容,你應該使用圖層蒙版或簡單的-cornerRadius屬性在視圖圖層上,也設置爲-borderWidth
如果你只是想要一個視圖背景圓角矩形,撫摸之前你應該設置筆觸顏色。
我不知道,但迅速在objC可能是這樣的

- (void) drawRect:(CGRect) rect { 
UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:5.0]; 
[[UIColor redColor] setStroke]; 
[bezierPath stroke]; 
} 

在斯威夫特可能:

override func drawRect(rect: CGRect) { 
     let path = UIBezierPath(roundedRect: rect, byRoundingCorners: UIRectCorner.AllCorners, cornerRadii: CGSize(width: 2.0, height: 2.0)) 
    UIColor.redColor().setStroke() 
     path.lineWidth = 1.0 
     path.stroke() 

    }