0
draw
메서드가 아래 코드에서 주석 처리 될 때보기가 원형으로 표시되지만 주석 처리가 해제되면보기가 다시 사각형으로 표시됩니다. draw
의 본문을 주석 처리하여 비어있는 메소드로 만들 수 있지만 뷰는 여전히 사각형으로 표시됩니다.iOS에서 그릴 수있는 UIView 모서리 반올림
나는 draw
의 시작, draw
의 마지막에 cornerRadius
라인을 이동했는데, drawInnerCircle
의하지만 아무 소용이 종료했습니다. draw
메서드를 사용하여보기를 반올림하는 방법이 여전히 있는지 궁금합니다.
import UIKit
class IconView: UIView {
override init(frame:CGRect) {
super.init(frame : frame)
self.backgroundColor = UIColor(red: 47/255, green: 49/255, blue: 53/255, alpha: 1.0)
self.layer.cornerRadius = self.frame.size.height/2.0
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func draw(_ rect: CGRect) {
drawInnerCircle()
}
internal func drawInnerCircle() ->() {
let halfSize:CGFloat = min(self.frame.size.width/2, bounds.size.height/2)
let desiredLineWidth:CGFloat = 1 // your desired value
let circlePath = UIBezierPath(
arcCenter: CGPoint(x:halfSize,y:halfSize),
radius: CGFloat(halfSize - 3),
startAngle: CGFloat(0),
endAngle:CGFloat(M_PI * 2),
clockwise: true)
let shapeLayer = CAShapeLayer()
shapeLayer.path = circlePath.cgPath
shapeLayer.fillColor = UIColor.clear.cgColor
shapeLayer.strokeColor = UIColor(red: 96/255, green: 99/255, blue: 105/255, alpha: 1.0).cgColor
shapeLayer.lineWidth = desiredLineWidth
layer.addSublayer(shapeLayer)
}
}
'shapeLayer'코너도 지정하려고 했습니까? – Tj3n
shapeLayer는 안쪽 원이므로 기술적으로 모서리가 없습니다. – stumped
친숙하지 않습니다. 현재는 새로운 레이어를 다시 그릴 때 항상 새 레이어를 추가합니다 (꽤 자주 발생할 수 있음). 이전 레이어를 제거하거나 "이전"레이어를 제 위치에 두십시오. – Lepidopteron