2013-06-07 1 views
0

짧은 버전 : UIImageView의 영역이 가로 세로 비율 채우기가 아닌 이미지를 포함하고 있음을 어떻게 알 수 있습니까?UIImageView 콘텐츠 픽셀 (잉어 이미지 채우기)

긴 버전 : 나는 그림과 같이 고정 된 크기의 UIImageView에 있습니다

enter image description here

나는이있는 UIViewController에 사진을로드하고, 그리고 나는 원본 사진의 가로 세로 비율을 유지하려면 그래서 설정 contentMode는 Aspect Fit입니다. 이는 전체 사진이있는 UIImageView에 표시되는 것을 보장 끝,하지만 일부 패딩을 추가하는 부작용과 (빨간색으로 구성) :

enter image description here

문제 없음 지금까지 ....하지만 지금은 내가 원본 이미지에서 얼굴 인식을합니다. 얼굴 감지 코드는 UIImageView 위에 렌더링 한 CGRect 목록을 반환합니다. UIView는 서브 클래 싱 된 UI를 가지고 있고, UIImageView와 동일한 크기와 오프셋 인 IB에 인스턴스를 배치했습니다.

이 방법은 사진이 UIImageView에 맞게 채워지지 않을 때 유용합니다. 패딩이 그러나 경우, 그것은 녹색으로 여기에서 보이는 일부 스큐 소개 :

enter image description here

나는 상자를 렌더링 할 때 계정에 이미지 패딩을 취할 필요를,하지만 난 그것을 검색하는 방법을 볼 수 없습니다.

원본 이미지 크기와 UIImageView 크기를 알고 있기 때문에 패딩이 있어야하는 위치를 계산할 수있는 대수를 할 수 있습니다. 그러나 아마도이 정보를 검색하는 방법이있는 것처럼 보이고 그것을 간과하고 있습니다.

답변

0

이미지보기를 자주 사용하지 않기 때문에 이것이 최상의 해결책이 아닐 수 있습니다. 다른 사람이 질문에 대답하지 않았기 때문에하지만 난 당신의 문제를 해결해야하는 간단한 수학적 솔루션을 통해 거라고 생각 :

UIImage *selectedImage; // the image you want to display 
UIImageView *imageView; // the imageview to hold the selectedImage 

NSInteger heightOfView = imageView.frame.size.height; 
NSInteger heightOfPicture = selectedImage.size.height; 

NSInteger yStartingLocationForGreenSquare; // set it to whatever the current location is 

// take whatever you had it set to and add the value of the top padding 
yStartingLocationForGreenSquare += (heightOfView - heightOfPicture)/2; 

이 무엇을 달성하기 아주 간단한 수학 공식은 다른 솔루션이있을 수 있습니다 그래서 있지만, 너는 필요해. 희망이 도움이됩니다.

관련 문제