2011-10-25 7 views
2

UIImageViewにはUIImageが含まれています。これはUIViewContentModeScaleAspectFit contentModeを使用するように設定されています。 UIImageViewは画面のサイズです。画像はないので、scaleAspectFitモードになります。私が理解できないことは、画面上でUIImageがどこですか?フレームは何ですか?画像の左上はどこに表示されますか?私は画面上で見ることができますが、コードで見ることはできません。これは簡単なはずですが、わかりません。私のUIImageはどこにありますか?

+0

私が知る限り、UIImageViewは表示中のイメージの実際のフレームを照会する方法を提供していません。おそらく、UIViewContentModeScaleAspectFitに頼るのではなく、UIImageViewで使用するフレームを手作業で計算するのが最善の方法です。 – titaniumdecoy

+0

それは公正です。私はその仕事をすることができると思う。アドバイスをいただきありがとうございます。 – fredwardo

答えて

0

はあなたのUIImageViewでこれを試してみてください:

それはあなたがUIViewContentModeScaleAspectFitを使用していると仮定すると、画像のフレームを計算しますします。

それはあなたが各次元でUIImageViewで、それに合うようにUIImageを拡大/縮小する必要がどのくらいうまくいく、その後、最小の倍率を選び、画像が割り当てられたに収まることを保証するためにされて何
- (CGRect) imageFrame 
{ 
    float horizontalScale = self.frame.size.width/self.image.size.width; 
    float verticalScale = self.frame.size.height/self.image.size.height; 
    float scale = MIN(horizontalScale, verticalScale); 
    float xOffset = (self.frame.size.width - self.image.size.width * scale)/2; 
    float yOffset = (self.frame.size.height - self.image.size.height * scale)/2; 
    return CGRectMake(xOffset, 
         yOffset, 
         self.image.size.width * scale, 
         self.image.size.height * scale); 
} 

スペース。

これでUIイメージのサイズを知ることができ、X、Yオフセットw.r.tを簡単に計算できます。収容するフレーム。

関連する問題