iOS에서 정다각형 그리기
참고
【iOS】정다각형 그리기 - UIBezierPath 버전 2
이것의 swift 버전
출처
정의
PolygonViewclass PolygonView:UIView{
//角の数
var polygonNumber:Int = 3{
didSet{
self.setNeedsDisplay()
}
}
//図形の色
var fillColor:UIColor = .white{
didSet{
self.setNeedsDisplay()
}
}
override var frame: CGRect{
didSet{
self.setNeedsDisplay()
}
}
override init(frame:CGRect){
super.init(frame:frame)
//色を塗らない部分を透過
self.isOpaque = false
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func draw(_ rect: CGRect) {
let r = min(rect.width/2, rect.height/2)
let c = CGPoint(x: rect.width/2, y: rect.height/2)
self.drawRegularPolygon(self.polygonNumber, radius: r, center: c)
}
//図形を描く
func drawRegularPolygon(_ p: Int, radius: CGFloat, center: CGPoint) {
guard let ctx = UIGraphicsGetCurrentContext() else { return }
ctx.clear(self.frame)
var pt:[CGPoint]=[]
for i in 0 ..< p {
let rad: CGFloat = CGFloat(Double.pi * Double(i) * 2.0 / Double(p) + Double.pi / 2.0)
let point = CGPoint(x: center.x + radius * cos(rad), y: center.y - radius * sin(rad))
pt.append(point)
}
ctx.setFillColor(self.fillColor.cgColor)
ctx.move(to: pt[0])
for p in pt{
ctx.addLine(to: p)
}
ctx.closePath()
ctx.fillPath()
}
}
사용법
//200*200のviewにオレンジ色の6角形を描く
let polygonView = PolygonView.init(frame: CGRect(x:0, y:0, width:200, height:200))
polygonView.polygonNumber = 6
polygonView.fillColor = .orange
출력
보충
홀수각형일 때 도형의 중심이 view의 중심에 오지 않는 것이 조금 기분 나쁘다
Reference
이 문제에 관하여(iOS에서 정다각형 그리기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sakiyamaK/items/5cb6b05c62f1207fd02b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
정의
PolygonView
class PolygonView:UIView{
//角の数
var polygonNumber:Int = 3{
didSet{
self.setNeedsDisplay()
}
}
//図形の色
var fillColor:UIColor = .white{
didSet{
self.setNeedsDisplay()
}
}
override var frame: CGRect{
didSet{
self.setNeedsDisplay()
}
}
override init(frame:CGRect){
super.init(frame:frame)
//色を塗らない部分を透過
self.isOpaque = false
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func draw(_ rect: CGRect) {
let r = min(rect.width/2, rect.height/2)
let c = CGPoint(x: rect.width/2, y: rect.height/2)
self.drawRegularPolygon(self.polygonNumber, radius: r, center: c)
}
//図形を描く
func drawRegularPolygon(_ p: Int, radius: CGFloat, center: CGPoint) {
guard let ctx = UIGraphicsGetCurrentContext() else { return }
ctx.clear(self.frame)
var pt:[CGPoint]=[]
for i in 0 ..< p {
let rad: CGFloat = CGFloat(Double.pi * Double(i) * 2.0 / Double(p) + Double.pi / 2.0)
let point = CGPoint(x: center.x + radius * cos(rad), y: center.y - radius * sin(rad))
pt.append(point)
}
ctx.setFillColor(self.fillColor.cgColor)
ctx.move(to: pt[0])
for p in pt{
ctx.addLine(to: p)
}
ctx.closePath()
ctx.fillPath()
}
}
사용법
//200*200のviewにオレンジ色の6角形を描く
let polygonView = PolygonView.init(frame: CGRect(x:0, y:0, width:200, height:200))
polygonView.polygonNumber = 6
polygonView.fillColor = .orange
출력
보충
홀수각형일 때 도형의 중심이 view의 중심에 오지 않는 것이 조금 기분 나쁘다
Reference
이 문제에 관하여(iOS에서 정다각형 그리기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sakiyamaK/items/5cb6b05c62f1207fd02b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
홀수각형일 때 도형의 중심이 view의 중심에 오지 않는 것이 조금 기분 나쁘다
Reference
이 문제에 관하여(iOS에서 정다각형 그리기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sakiyamaK/items/5cb6b05c62f1207fd02b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)