Mari Belajar CoreGraphics (Part 1)

Muhammad Alfiansyah
3 min readAug 24, 2020

--

override func draw(_ rect: CGRect)

Method diatas merupakan method dari UIView yang kita perlukan jika kita ingin mengimplementasi drawing code, untuk lebih jelasnya nanti bisa kita lihat dalam kode yang akan kita buat nanti.

Sebenarnya kita juga bisa menggunakan addSublayer untuk menambahkan object view pada UIView (superview), karena function draw lebih powerfull karena view akan dirender otomatis ketika view dibuat ataupun ketika view ter-invalidate, sehingga kita tidak perlu memantau perubahan bounds atau frame saat view size berubah.

The default implementation of this method does nothing. Subclasses that use technologies such as Core Graphics and UIKit to draw their view’s content should override this method and implement their drawing code there. You do not need to override this method if your view sets its content in other ways. For example, you do not need to override this method if your view just displays a background color or if your view sets its content directly using the underlying layer object.

Path Function

public func move(to point: CGPoint, transform: CGAffineTransform = .identity)

Move merupakan fuction untuk memulai suatu subpath, jika kita tidak menggunakan object path seperti ellipse, rectangle, roundedRect.

Add Arc

public func addArc(center: CGPoint, radius: CGFloat, startAngle: CGFloat, endAngle: CGFloat, clockwise: Bool)

Add Ellipse

public func addEllipse(in rect: CGRect, transform: CGAffineTransform = .identity)

Add Curve

public func addCurve(to end: CGPoint, control1: CGPoint, control2: CGPoint, transform: CGAffineTransform = .identity)

Add Line

public func addLine(to point: CGPoint, transform: CGAffineTransform = .identity)

Add Lines

public func addLines(between points: [CGPoint], transform: CGAffineTransform = .identity)

Add Path

public func addPath(_ path: CGPath, transform: CGAffineTransform = .identity)

Add Rounded Rect

public func addRoundedRect(in rect: CGRect, cornerWidth: CGFloat, cornerHeight: CGFloat, transform: CGAffineTransform = .identity)

Add Quad Curve

public func addQuadCurve(to end: CGPoint, control: CGPoint, transform: CGAffineTransform = .identity)

Add Rect

public func addRect(_ rect: CGRect, transform: CGAffineTransform = .identity)

public func addRects(_ rects: [CGRect], transform: CGAffineTransform = .identity)

Implementasi

DrawView

Keterangan

  1. Panah merah menunjukan corner radius dari object rectangel (let corner: CGFloat = 8)
  2. Panah Hijau menunjukan padding dari object (let padding: CGFloat = 16)
  3. Panah Kuning menunjukan diameter dari lingkaran (let height: CGFloat = 128)

Untuk menggambar object diatas kita hanya memerlukan 2 method dari Path Function, yaitu addRoundRect dan addElipse.

--

--

No responses yet