0
draw
メソッドが以下のコードの中にコメントアウトされている場合、ビューは円形に表示されますが、コメントアウトされていない場合はビューが再び矩形として表示されます。 draw
の本文をコメントアウトして空のメソッドにすることはできますが、ビューは四角形として表示されます。描画が有効になっているUIViewの角を丸める
私はdraw
の末尾にdraw
の先頭と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