2011-10-25 3 views
2

나는 UIImageView에 포함 된 UIImage을 가지고 있습니다. contentMode는 UIViewContentModeScaleAspectFit입니다. UIImageView는 화면의 크기입니다. 이미지는 아니므로 scaleAspectFit 모드를 사용하십시오. 내가 알 수없는 것은 UIImage가 화면 어디에 있는가? 프레임이란 무엇입니까? 이미지의 왼쪽 상단은 화면에 어디에 나타 납니까? 화면에서는 볼 수 있지만 코드에서는 볼 수 없습니다. 이것은 간단해야하지만, 나는 그것을 이해할 수 없다.화면에 내 UIImage가 있습니까?

+0

내가 아는 한, UIImageView는 표시하고있는 이미지의 실제 프레임을 쿼리하는 방법을 제공하지 않습니다. 아마도 UIViewContentModeScaleAspectFit을 사용하는 대신 손으로 UIImageView에 사용할 프레임을 계산하는 것이 가장 좋습니다. – titaniumdecoy

+0

그건 공평합니다. 나는 그 일을 할 수 있다고 생각합니다. 조언 해주셔서 감사합니다. – fredwardo

답변

0

당신의 UIImageView이 시도 :

그것은 이미지의 프레임을 계산하는 것입니다 것입니다, 당신은 UIViewContentModeScaleAspectFit를 사용하는 가정.

- (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); 
} 

그것이 무엇을하는 것은 당신이 이미지가 할당에 맞는지 확인하기 위해, 각 차원에있는 UIImageView에 맞게있는 UIImage를 확대/축소 할 필요가 다음 작은 배율을 선택합니다 얼마나 많은 운동한다 공간.

UI 이미지의 크기를 알면 X, Y 오프셋 w.r.t를 쉽게 계산할 수 있습니다. 포함하는 프레임.

관련 문제