2016-05-15 7 views
1

Es gibt eine UIImageView in einem UIScrollView welcher Benutzer verkleinere sie und können und speichern Sie es dann:Extra Leerzeichen, wenn sichtbaren Inhalt von UIScrollView bekommen

enter image description here

Die Fläche unter der Navigationsleiste und Oberseite der Tableiste ist UIScrollView Rahmen.

Wenn der Benutzer Erledigt erreicht, wird das Bild in der Kamerarolle gespeichert. Es ist was dort gespeichert (Fotos App): enter image description here

Ich habe keine Ahnung, was ist dieser leere Platz im gespeicherten Bild.

Es ist mein Code, um das Bild zu speichern:

UIGraphicsBeginImageContextWithOptions(scrollView.frame.size, false, 0.0) 
      let rect = CGRectMake(0, scrollView.frame.origin.y, scrollView.frame.size.width, scrollView.frame.size.height) 
      self.view.drawViewHierarchyInRect(rect, afterScreenUpdates: true) 
      let image = UIGraphicsGetImageFromCurrentImageContext() 
      let imageData = UIImageJPEGRepresentation(image, 1) 
      let compressedJPGImage = UIImage(data: imageData!) 
      UIImageWriteToSavedPhotosAlbum(compressedJPGImage!, nil, nil, nil) 

Was ich speichern möchten genau im sichtbaren Bereich von UIScrollView ist.

Antwort

0

Ich hatte CGContextTranslateCTM() zu verwenden, um das Rechteck zu übersetzen:

let screenRect: CGRect = scrollView.bounds 
    UIGraphicsBeginImageContext(screenRect.size) 
    let ctx: CGContextRef = UIGraphicsGetCurrentContext()! 
    CGContextTranslateCTM(ctx,0,-scrollView.frame.origin.y) 
    UIColor.blackColor().set() 
    CGContextFillRect(ctx, screenRect) 
     view.layer.renderInContext(ctx) 
    let image: UIImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
Verwandte Themen