このメソッドは、画像が読み込まれたときに画像ビューのフレームを取得するために作成しました。だから、私のための要件はあなたの場合と同じでした:
1)アスペクトフィットコンテンツモードの画像ビュー2)画像の正確なフレームを取得します(この方法で画像ビューの位置を変更できます)
お役に立てれば:
- (CGRect) getFrameOfImage:(AsyncImageView *) imgView
{
if(!imgView.loaded)
return CGRectZero;
CGSize imgSize = imgView.image.size;
CGSize frameSize = imgView.frame.size;
CGRect resultFrame;
if(imgSize.width < frameSize.width && imgSize.height < frameSize.height)
{
resultFrame.size = imgSize;
}
else
{
float widthRatio = imgSize.width / frameSize.width;
float heightRatio = imgSize.height / frameSize.height;
float maxRatio = MAX (widthRatio , heightRatio);
NSLog(@"widthRatio = %.2f , heightRatio = %.2f , maxRatio = %.2f" , widthRatio , heightRatio , maxRatio);
resultFrame.size = CGSizeMake(imgSize.width / maxRatio, imgSize.height / maxRatio);
}
resultFrame.origin = CGPointMake(imgView.center.x - resultFrame.size.width/2 , imgView.center.y - resultFrame.size.height/2);
return resultFrame;
}
ここで使用していますAsyncImageView
が、と同じように機能しUIImageView
ます。覚えておくべき重要なことは、画像がロードされた後にこのメソッドを呼び出すことです。
乾杯!