[SWIFT] Rendre UIView prévisualisable à partir du code.

Conclusion d'abord

Je vous ai dit que ce serait pratique si vous pouviez voir la vue du débogueur pendant les tests.

スクリーンショット 2020-10-17 22.17.45.png

la mise en oeuvre

Implémentez debugQuickLookObject.

Cela ne fonctionne que si vous ajoutez @ objc depuis Swift 4.0.

iOS

extension UIView {
    @objc func debugQuickLookObject() -> Any? {
        UIGraphicsBeginImageContextWithOptions(view.bounds.size, false, UIScreen.main.scale)
        drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true)
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        return image
    }
}

mac

extension NSView {
    @objc func debugQuickLookObject() -> Any? {
        guard let rep = self.bitmapImageRepForCachingDisplay(in: bounds) else { return nil }
        self.cacheDisplay(in: self.bounds, to: rep)
        
        guard let cgImage = rep.cgImage else { return nil }
        return NSImage(cgImage: cgImage, size: bounds.size)
    }
}

Maintenant, lorsque vous mettez un point d'arrêt dans le débogueur LLDB, arrêtez-le et appuyez sur la marque d'œil

スクリーンショット 2020-10-17 22.25.44.png

Vous pouvez prévisualiser le contenu de View.

スクリーンショット 2020-10-17 22.17.45.png

Recommended Posts

Rendre UIView prévisualisable à partir du code.
Coder Java depuis Emacs avec Eclim
Passer d'Eclipse à VS Code
Exemple de code utilisant Minio de Java