2014-04-14 3 views
2

현재 2 개의 콘텐츠 모드를 동시에 설정할 수 없습니다. 하지만 이미지의 크기와 중심이 모두 필요합니다. 어떻게해야합니까?센터 및 가로 세로 맞춤 이미지

@property (weak, nonatomic) IBOutlet UIView *windowOut; 

self.windowOut.layer.borderColor = [UIColor redColor].CGColor; 
self.windowOut.layer.borderWidth = 3.0f; 

UIImage *face = [UIImage imageNamed:@"face.png"]; 

UIImageView* imageView = [[UIImageView alloc] initWithFrame:self.windowOut.frame]; 
imageView.contentMode = UIViewContentModeScaleAspectFit; 
imageView.contentMode = UIViewContentModeCenter; 

[imageView setImage:face]; 
[self.windowOut addSubview:imageView]; 

이 이미지는 상기 코드 결과 :이 이미지 결과가 enter image description here

때 "imageView.contentMode = UIViewContentModeCenter; "주석 : enter image description here

EDIT : 이 이미지는 두 콘텐츠 모드를 모두 주석 처리 한 결과입니다. enter image description here

+0

어쨌든 UIViewContentModeScaleAspectFit은 이미지를 중앙에 배치하지 않습니까? –

+0

아니 괴상한 이유로 오른쪽 이동 % 10 오른쪽 – Esqarrouth

+0

이미지를 추가했습니다 ... – Esqarrouth

답변

2

이 중심되지 않는 이유는 여기에 있습니다 : windowOut은 (0/0)에 위치하는 일에만 작동

UIImageView* imageView = [[UIImageView alloc] initWithFrame:self.windowOut.frame]; 

[self.windowOut addSubview:imageView]; 

. .frame은 수퍼 뷰의 좌표계에서 프레임을 제공합니다. windowOut이있는 경우 수퍼 뷰 (self.view?) 내에 (20/20)라고 말한 다음 imageView(40,40)에 있습니다.

대신 bounds을 사용하십시오. 그것은 동일하지만 자체 좌표계 내에서 동일합니다.

UIImageView* imageView = [[UIImageView alloc] initWithFrame:self.windowOut.bounds]; 
[self.windowOut addSubview:imageView]; 
+0

당신의 제 3의 이미지는 단지 증거를 증명하고있다. 'UIViewContentModeScaleAspectFit'이 할 것입니다. –

+0

코드가 시뮬레이터에 완벽하게 작동하지만이 장치를 테스트했을 때 세 번째 이미지처럼 보이지만 중앙에 위치합니다. 무엇이 문제 일 수 있습니까? – Esqarrouth

+0

시뮬레이터와 장치 사이의 이상한 변화를 관찰하면 a) 시뮬레이터에서 앱을 삭제하고, b) 장치에서 앱을 삭제하고, c) 정리하고 다시 작성합니다. –

0

imageview가 수퍼 뷰와 동일한 프레임으로 설정되고 콘텐츠 모드가 UIViewContentModeScaleAspectFit 인 경우 정의에 따라 중앙에 위치해야합니다. 행운을 빕니다!

+0

이미지가 추가되었습니다 ... – Esqarrouth

+0

그냥 궁금한데, 콘텐츠 모드를 설정하지 않으시겠습니까? 즉, 기본 콘텐츠 모드를 유지 하시겠습니까? – user2105505

+0

예 문제는 보이는 콘텐츠 모드 때문이 아니라고 생각합니다. 나는 프레임을 추가했는데, 이제는 원본 이미지도 어떤 이유로 센터링 문제가 있음을 알게되었습니다. 나는 포스트를 편집했다 – Esqarrouth