2016-06-25 29 views
2

コンテンツモードがAspect FitのIBでUIImageViewを作成しました。私はその後、そのビューに大きな画像をURLからロードします。scaleAspectFitの後のUIImageViewフレームのサイズ変更

@IBOutlet weak var pictureView: UIImageView! 

NSURLSession.sharedSession().dataTaskWithURL(url, completionHandler: { (data, _, error) -> Void in 
guard let data = data where error == nil, 
     let image = UIImage(data: data) 
     else { 
      print(error?.localizedDescription) 
      return 
} 

pictureView.image = image 
pictureView.clipsToBounds = true 
setNeedsLayout() 
layoutIfNeeded() 

}).resume() 

UIImageViewにおける画像負荷、及びアスペクトフィットしかしUIImageViewのフレームは元の大きな画像のサイズに設定され、フレーム内のすべてを表示するために正しく画像をリサイズ。私は、この巨大なフレームをこの小さなサイズ変更されたイメージで囲んでいます。私はUIImageViewフレームをしっかりと、Aspect Fit UIImageをラップして、私の他のすべての書式を捨てる必要があります。

Huge frame

私は何とかUIImageViewのために手動で新しいフレームサイズを計算する必要がある、または私はどこかの設定をしないのですか?

EDIT:

私はまた、画像の周囲にUIImageViewフレームのサイズを変更するには、次の試してみた:

pictureView.frame = AVMakeRectWithAspectRatioInsideRect(picture.size, pictureView.frame) 

と...

pictureView.frame = CGRectMake(self.pictureView.frame.origin.x, self.pictureView.frame.origin.y, pictureImage.size.width, pictureImage.size.height) 

をそして、私も試してみました圧縮抵抗設定で再生します。

答えて

1

よくあることがいくつかあります。

依存関係:

1)画像サイズ。画像の高さ/幅の比がImageViewの高さ/幅の比より大きくないか等しい場合、ImageViewに一致する比率が少なくなるため、黒いスペースが表示されます。

2)imageViewの制約がわかりません。@IBOutletです。

あなたの文章では混乱していますが、UIImageViewのフレームはオリジナルの大きな画像のサイズに設定されています。

私はimageViewにイメージを設定したいと思っていますが、UIImageViewをイメージサイズに設定してからイメージをUIImageViewに設定すると、実際にデバッグするのが難しくなります。あなたは何が起こりたいのかをより詳細に説明できますか?

EDIT

フレームとImageViewのがあります - このフレームが異なることはありません。

contentModeは画像がUIViewContentModeScaleAspectFitUIViewContentModeScaleAspectFillモードが収まるまたは画像の元の縦横比を維持しながら、スペースを埋めるために、画像を拡大縮小ImageViewの

上に表示される方法を変更します。

UIViewContentModeScaleToFillの値は、元の縦横比に関係なく画像を拡大/縮小し、画像が歪んで表示されることがあります。

UIViewContentModeScaleToFill 必要に応じてコンテンツのアスペクト比を変更して、コンテンツのサイズに合わせてコンテンツを拡大縮小するオプション。 *(ほとんどの場合は推奨しません)

UIViewContentModeScaleAspectFit アスペクト比を維持して、ビューのサイズに合わせてコンテンツを拡大/縮小するオプションです。ビューの境界の残りの領域は透明です。 *(この1つは、画像全体が画面に収まることが保証される。画像が画面よりも小さい比であれば、次いで、トップ/ボトム又は左/右のいずれか、いくつかのエッジに黒が存在するであろう)

UIViewContentModeScaleAspectFillビューのサイズを満たすためにコンテンツを拡大縮小するオプション。コンテンツの一部は、ビューの境界を埋めるためにクリップされることがあります。 *(これは、全画像ビューが行われることを保証します)

+0

私は、iOSがUIImageViewの画像を、アスペクトの元の画像のフルサイズでフレームを設定して設定するサイズを合わせる。私は 'UIView'内に私の' UIImageView'を持っています。すべてのエッジに制約があります。画像の比率は 'UIImageView'で規定されているものとは時々異なるでしょう。私はそれを処理するのに十分柔軟なレイアウトが必要です。画像は左右のエッジからブリードしてはならないが、そのフレーム全体をパッディングしてはならない。 – Fook

+0

私の簡単な質問:「UIImageView」をAspect Fitでサイズ変更すると、フレームが固定されているのではなく、なぜ新しい次元に崩れないのですか?画像でサイズを変更するにはどうすればよいですか? – Fook

+0

ContentModeを 'ScaleAspectFit'から' ScaleAspectFill'に変更するとどうなりますか? – impression7vx

関連する問題