6

Tam olarak bir tablo ve gezinme denetleyicileri şeffaflığım var. Bu nedenle, yeni görüntü denetleyicileri iterken animasyon kırıldı. Bu nedenle, bir sonraki görünüm denetleyicisinin anlık görüntüsünü alan ve bunu canlandıran kendi özel geçiş geçişimi ekledim.iOS10'da anlık görüntü, görünüm tamamen oluşturulmadan önce anlık görüntü alır

Artık iOS10'da çalışmıyor. snapshotView(afterScreenUpdates: true), saf beyaz olan bir görünümü döndürür. Ayrıca, grafik bağlamında eski yöntemle anlık görüntü almaya çalıştım ve işe yaramadı.

Gezinme denetleyicisine aktarılan görünümün anlık görüntüden önce yüklendiğinden nasıl emin olabilirim? Yoksa bunu çözmenin daha iyi bir yolu var mı? Bu

+0

Bunu hiç çalışmış nasıl merak ediyorum: Eğer simülatörü için bu sorunu gidermek için gerekirse burada Pod bulundu etrafında bir iştir. Görünmeden önce bir görünümün anlık görüntüsünü alırsınız. Biraz daha detaylı açıklayabilir misin? Anlık görüntüyü tam olarak nerede yapıyorsunuz? Bu geçişi nasıl yapıyorsunuz ve elbette ki: ilk sorununuz berbat geçişle hala var mı? – jboi

+1

Aynı şeyi iPhone 7 (veya 7 Plus) Simülatörlerde görüyorum. Diğer simülatörler ve cihazlar etkilenmemiş görünüyor. – Keller

cevap

1

Bu uzantı kesinlikle bir iPhone 7 simülatörü ve iPhone 7+ simülatörü sorunu olduğunu sadece söylemek

extension UIView { 
    /// Replacement of `snapshotView` on iOS 10. Fixes the issue of `snapshotView` returning a blank white screen. 
    func snapshotImageView() -> UIImageView? { 
     UIGraphicsBeginImageContext(bounds.size) 
     guard let context = UIGraphicsGetCurrentContext() else { 
      return nil 
     } 

     layer.render(in: context) 

     let viewImage = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 

     return UIImageView(image: viewImage, highlightedImage: viewImage) 
    } 
} 
+0

Bu işe yarayabilir gibi görünüyor ama görsel kalitesi çok kötü. Bunu yapmaya çalıştım ama işe yaramadı: 'let scale = self.contentScaleFactor; context.scaleBy (x: scale, y: scale); ' – frankish

+0

@frankish UIGraphicsBeginImageContext (bounds.size)' yi UIGraphicsBeginImageContextWithOptions (bounds.size, isOpaque, 0) 'ile değiştirmeyi deneyebilirsiniz. Kaliteyi geliştirirse bana bildirin. – Bebekucing

+0

Maalesef bu kod bloğunun çözmediğini öğrendim. İlk başta, bunu çözdüm sanıyordum ama gecikmiş işlem hacklerimi tutuyormuşum gibi görünüyor. Hacklerimi temizlediğimde hala siyah görünüyor .. Kesmek: Ekrana yaklaşan görünümü ekliyorum. Anlık fotoğrafını çekip daha sonra "DispatchQueue.main.asyncAfter 0.1 ms" sonra kaldırıyorum. Bu nedenle, kendiliğinden render çizmek için zaman sağlar:/ – frankish

8

istediğim konuyu düzeltmek gerekir .. maalesef benim için kırılma değişimdir. Sorun gerçek bir cihazda görünmeyecek. https://github.com/NewAmsterdamLabs/ZOZolaZoomTransition/

- (UIImage *)zo_snapshot { 
    UIGraphicsBeginImageContextWithOptions(self.bounds.size, self.opaque, [UIScreen mainScreen].scale); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    [self.layer renderInContext:context]; 
    UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return snapshot; 
} 
+1

iPhone 7 ve iPhone 7+ simülatörünü kastediyorum. Anlık görüntü görünümünün bu simülatörler için beklendiği gibi çalışmadığı aynı sorun benim için oluştu. Başka bir simülatöre geçmek sorunu çözdü. Garip. – Idr

İlgili konular