Чтобы сэкономить время для любого пользователя в Google, я неправильно подумал, что clearsContextBeforeDrawing
будет также очистить все слои, добавленные в drawRect. Это не.Чтобы очистить чертеж рисунка слоя drawRect
Конечно, как объяснил Мэтт, вы должны обязательно нарисовать обычный способ в drawRect, а затем clearsContextBeforeDrawing
работает правильно. Пример,
override func drawRect(rect: CGRect)
{
// clearsContextBeforeDrawing works perfectly here as normal
// don't add any layers in here :)
let dotPath = UIBezierPath(ovalInRect:rect)
mainColor.setFill()
dotPath.fill()
let ins:CGFloat = (ringThickness/2)
let circlePath = UIBezierPath(ovalInRect: CGRectInset(rect,ins,ins))
circlePath.lineWidth = ringThickness
ringColor.setStroke()
circlePath.stroke()
}
Вот плохой способ привлечь drawRect
override func drawRect(rect: CGRect)
{
let circlePath = UIBezierPath(ovalInRect:rect)
let circle = CAShapeLayer()
circle.path = circlePath.CGPath
circle.fillColor = someColor.CGColor
layer.addSublayer(circle)
... and a few more layers like ...
blah.fillColor = someColor.CGColor
layer.addSublayer(blah)
}
Но как очистить перед нанесением?
Установка clearsContextBeforeDrawing
ничего не делает.
Единственный способ, которым я могу очистить это путем удаления всех слоев:
override func drawRect(rect: CGRect)
{
// first remove all layers...
if let sublayers = layer.sublayers {
for layer in sublayers {
if layer.isKindOfClass(CAShapeLayer) //(essential)
{ layer.removeFromSuperlayer() }
}
}
...
}
есть лучший способ, чтобы очистить «слой» рисунок?
Это слишком открытый вопрос. У меня нет понятия, какова ваша общая цель. – matt
В любом случае, я полностью понимаю это - потрясающе. Конечно, я должен был вникать в нынешний контекст. И тогда действительно 'clearsContextBeforeDrawing' действительно работает - yay! Поэтому я смутил то, что я думал, что «cleararsContextBeforeDrawing» также «очистит слои», если вы поймете, что я имею в виду. Ты поставил меня прямо :) Ницца ... – Fattie