2010-02-01 7 views
0

UIImageView를 회전하고 가로 세로 비율에 따라 크기를 설정하고 싶습니다. 하지만 문제가 있습니다. 먼저 여기에 코드를 붙여 넣은 다음 문제를 설명합니다.UIImageView 회전 및 크기 조정

imageView.size = CGSizeMake(myWidth, myHeight); 
[imageView setContentMode:UIViewContentModeCenter]; 

이렇게 두 줄은 내 imageView의 크기와 contentMode를 설정합니다. 이렇게하면 이미지가 올바르게 나타납니다. 그래서 장치가 회전하면 회전 알림을받습니다.

if ([self isLandscape]) { 
    CGFloat aspect = myHeight/myWidth; 
    imageView.size = CGSizeMake(myWidth/aspect, myWidth); 
    [self rotateView:imageView withDegree:degree]; 
    imageView.origin = CGPointMake(x, y); 
} else { 
    [self rotateView:imageView withDegree:degree]; 
    imageView.origin = CGPointMake(x, y); 
    imageView.size = CGSizeMake(myWidth, myHeight); 
} 

그러면 회전이 완료됩니다. 하지만 당신도 내가 크기를 조정한다는 것을 알 수 있습니다.
문제는 내 imageView에 재정의 할 수없는 최소 크기가 있다는 것입니다. 하지만 UIViewContentModeCenter에서 내 imageView의 contentMode 속성을 UIViewContentModeScaleAspectFit로 변경하면 잘 작동하지만 크기가 예상보다 작다고 알았습니다. 왜 그런가요? 이 문제를 해결하려면 어떻게해야합니까? 도움이 필요하면 제발

답변

1

ScaleAspectFit은 내용이 모두 표시되고 자르기가 발생하지 않도록 콘텐츠의 크기를 조정합니다. 콘텐츠가보기를 채우고 일부 콘텐츠 클리핑, 당신은 UIViewContentModeScaleAspectFill를 사용해야합니다 대신.

그러나, 당신이 원하는 모든 각 차원의 최소 크기를 적용 할 경우, 대신 MAX 매크로를 사용할 수 있습니다.

CGSize mySize = CGSizeMake(myWidth, myHeight); 
mySize.x = MAX(mySize.x, myXMin); 
mySize.y = MAX(mySize.y, myYMin); 
imageView.size = mySize; 

을 또한, 당신 것을 확인 조경 크기가 (width*width/height, width)이고 실제로는 (height, width)이 아닌 의미입니다.

관련 문제