2015-09-10 4 views
11

UIImageViewを作成し、UIImageに割り当てました。 UIImageViewコンテンツモードをAspect Fitに設定しました。イメージの上下からパディングを削除するにはどうすればいいですか、またはUIImageViewのサイズを変更してイメージをラップするにはどうすればよいですか?私はすべてを試みた。SwiftでUIImageViewのアスペクトに合わせてスペースを削除する方法

イメージの新しいサイズを取得すると言うと、それは機能しません。 UIImageView内の画像サイズを取得すると、元の画像の幅と高さのみが得られます。

他の投稿にリンクしないでください。私はすでにそれらを読んだ。彼らは働かない。

enter image description here

答えて

3

あなたはUIImageViewのフレームのためにそれを手動で計算することができるあなたのイメージでそのアスペクトフィットのサイズ、またはAVMakeRectWithAspectRatioInsideRect(AVFoundationからメソッド)を使用します。

+0

答えはもっとeそれは私の問題を解決するためにいくつかのヒントをくれました、ありがとう! –

+0

@thibautnoahあなたはそれを修正しましたか?親切に私を助ける – user1629977

+0

@ user1629977私は以下の私の答えは十分な仲間以上のものだと思います –

0

だから、UIImageViewをビューに対して幅が等しく設定したとしましょう。 イメージを適切に再描画する方法の1つは、Core Graphicsを使用することです。 あなたがしているのは、画像を適切に収めるために必要な倍率を計算することです。

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

、より良いものを理解するためのベンチマークとの良好なチュートリアル:基本的の一つである私が使用したコードの

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

サンプル( あなたはここにいくつかの素晴らしいサンプルを見つけることができますgithubメソッドは私のニーズに合わせて変更されます):

  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 
関連する問題