Bir CAEmitterLayer içeren bir görünümün ekran görüntüsünü almak mümkün mü? Ben CAEmitterLayer drawingView.layerEkran Görüntüsü CAEmitterLayer ile görüntüleme
cevap
Bu açık olduğunu doğruladı
UIGraphicsBeginImageContext(drawingView.frame.size)
var context:CGContextRef = UIGraphicsGetCurrentContext()
drawingView.layer.renderInContext(context)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
:
Ben denemek zaman
, görünüm ince oluşturulur, ancak parçacıkların hepsi eksik, burada benim kod iOS için çalışır, ama şimdi OSX için benzer bir yöntem gerekir:func offscreenScreenshot(drawingView:UIView) -> Image
{
UIGraphicsBeginImageContextWithOptions(drawingView.frame.size, true, 1.0)
let res = drawingView.drawViewHierarchyInRect(drawingView.bounds, afterScreenUpdates: false)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
Merhaba Chris, kodu denedim ancak görüntü kalitesi ve eksik anlık görüntü verileriyle ilgili sorun yaşıyorum , Çözüm için önerebilir misiniz ..? –
Bu bir ölçek sorunu mu? öyleyse, ölçek parametresi için 1,0 değerini 0 olarak ayarlayın. – Chris
ve aynı zamanda afterScreenUpdates nedeniyle anlık görüntü verisi eksik: false.if sonra AfterScreenUpdates: true UIView yanıp söner ve daha sonra –
Son olarak, kullanarak bir şey olsun: drawViewHierarchyInRect, CAEmitterLayer edememekle ilgili bu yayını görüşmeler hale çekiliyor InContext http://stackoverflow.com/questions/11926690/caemitterlayer-not-rendering-when-renderincontext-of-superlayer-is-called – Chris