ios - How do I screenshot a uiview without adding it to the subview? -


i have multiple subviews on parent view, , need convert uiview uiimage of subviews. added tag views needed take screenshot of , added own view, when try screenshot black screen. however, when use regular parent view photo subviews.

let viewpic = uiview()              subview in self.view.subviews {                  if(subview.tag == 6) {                     viewpic.addsubview(subview)                 }                  if(subview.tag == 8) {                     viewpic.addsubview(subview)                 }             }              let picimage = viewpic.getsnapshotimage() //this black screen 

getsnapshotimage

extension uiview {     public func getsnapshotimage() -> uiimage {         uigraphicsbeginimagecontextwithoptions(self.bounds.size, self.isopaque, 0)         self.drawhierarchy(in: self.bounds, afterscreenupdates: false)         let snapshotitem: uiimage = uigraphicsgetimagefromcurrentimagecontext()!         uigraphicsendimagecontext()         return snapshotitem     } } 

first of all, viewpic doesn't set frame size default 0 frame may cause issue.

secondly, tried use getsanpshotimage() on sample project, blank image.

have @ demo code, can want (see screenshot):

class viewcontroller: uiviewcontroller {      override func viewdidload() {         super.viewdidload()         // additional setup after loading view, typically nib.          let viewpic = uiview()         viewpic.frame = self.view.frame          let view1 = uiview()         view1.frame = cgrect(x: 0, y: 0, width: 100, height: 100)         view1.backgroundcolor = uicolor.red         viewpic.addsubview(view1)          let view2 = uiview()         view2.frame = cgrect(x: 0, y: 200, width: 100, height: 100)         view2.backgroundcolor = uicolor.blue         viewpic.addsubview(view2)          let picimage = viewpic.converttoimage() //this black screen         print(picimage)     }      override func didreceivememorywarning() {         super.didreceivememorywarning()         // dispose of resources can recreated.     }   }  extension uiview {     func converttoimage() -> uiimage {         let renderer = uigraphicsimagerenderer(bounds: bounds)         return renderer.image { renderercontext in             layer.render(in: renderercontext.cgcontext)         }     } } 

enter image description here


Comments

Popular posts from this blog

Command prompt result in label. Python 2.7 -

javascript - How do I use URL parameters to change link href on page? -

amazon web services - AWS Route53 Trying To Get Site To Resolve To www -