2015-09-10 11 views
11

Ho creato un UIImageView e gli ho assegnato un UIImage. Ho impostato la modalità di contenuto UIImageView su Aspect Fit. Come rimuovo il padding dalla parte superiore e inferiore dell'immagine, o come ridimensiono lo UIImageView per avvolgere l'immagine? Ho provato di tutto.Come rimuovere la spaziatura dall'aspetto di UIImageView in Swift

Se stai per dire di ottenere la nuova dimensione dell'immagine, non funzionerà. La dimensione dell'immagine all'interno dello UIImageView dà solo la larghezza e l'altezza dell'immagine originale.

Si prega di non collegare altri messaggi. Li ho già letti Loro non lavorano.

enter image description here

risposta

3

Si può calcolare manualmente per il frame del UIImageView dimensioni che Aspect si adattano con la vostra immagine, o utilizzare AVMakeRectWithAspectRatioInsideRect (metodo da AVFoundation).

+0

Mentre la risposta potrebbe essere più e lavoro mi ha dato alcuni spunti per risolvere il mio problema, grazie! –

+0

@thibautnoah hai riparato? Gentilmente aiutami – user1629977

+0

@ user1629977 penso che la mia risposta qui sotto sia più che sufficiente compagno –

0

Quindi, supponiamo di avere un UIImageView impostato su larghezza uguale in relazione alla vista. Un modo per ridisegnare l'immagine per adattarsi sarebbe utilizzare la grafica principale. Quello che fai è calcolare il fattore di scala necessario per ridisegnare l'immagine per adattarla correttamente. È possibile trovare alcuni grandi campioni qui:

https://github.com/natecook1000/Image-Resizing/blob/master/Image%20Resizing/ImageResizingMethods.swift

e un buon tutorial con parametri di riferimento per capire meglio le cose:

http://nshipster.com/image-resizing/

Esempio di codice che ho usato (che è fondamentalmente uno dei i metodi github si modificano in base alle mie esigenze):

  let image = UIImage(data: data!) 
      let oldWidth = image!.size.width 
      let scaleFactor = UIWindow().screen.bounds.width/oldWidth 
      let cgImage = image!.CGImage 

      let width = Double(CGImageGetWidth(cgImage)) * Double(scaleFactor) 
      let height = Double(CGImageGetHeight(cgImage)) * Double(scaleFactor) 
      let bitsPerComponent = CGImageGetBitsPerComponent(cgImage) 
      let bytesPerRow = CGImageGetBytesPerRow(cgImage) 
      let colorSpace = CGImageGetColorSpace(cgImage) 
      let bitmapInfo = CGImageGetBitmapInfo(cgImage) 

      let context = CGBitmapContextCreate(nil, Int(width), Int(height), bitsPerComponent, bytesPerRow, colorSpace, bitmapInfo.rawValue) 

      CGContextSetInterpolationQuality(context, .High) 

      CGContextDrawImage(context, CGRect(origin: CGPointZero, size: CGSize(width: CGFloat(width), height: CGFloat(height))), cgImage) 

      let scaledImage = CGBitmapContextCreateImage(context).flatMap { return UIImage(CGImage: $0) } 
      imageView.image = scaledImage 
Problemi correlati