當系統要顯示一個視圖(UIView)時,它會向視圖發送drawRect(rect:)消息。所以,如果我們需要在視圖上進行繪制,則可以在drawRect方法內部實現。
1,用純色填充的矩形
下面創建一個長寬都為100的矩形UIView,坐標(50,50)。其內部使用綠色填充。
代碼如下 復制代碼 import UIKit
2,繪制圓角矩形,同時添加外部邊框輪廓
(1)在對一個路徑描邊時,輪廓線是在路徑上繪制的。由於設置輪廓線寬度為3,為了讓輪廓線不會被邊緣裁去一部分,使用 CGRectInset函數保持中心點不變的情況下矩形內縮一個點。(2)重寫init(frame: CGRect) 方法,將背景色設為透明,否則背景是黑色的(四個圓角透明部分會顯示黑色)
代碼如下 復制代碼
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let viewRect = CGRect(x: 50, y: 50, width: 100, height: 100)
let view1 = MyCanvas(frame: viewRect)
self.view.addSubview(view1)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
class MyCanvas: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
//把背景色設為透明
self.backgroundColor = UIColor.clearColor()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func drawRect(rect: CGRect) {
let pathRect = CGRectInset(self.bounds, 1, 1)
let path = UIBezierPath(roundedRect: pathRect, cornerRadius: 10)
path.lineWidth = 3
UIColor.greenColor().setFill()
UIColor.blueColor().setStroke()
path.fill()
path.stroke()
}
}