2013-07-22 2 views
6

이미지를 uiimageview에 넣으려고하면 이미지가 다운로드되어 dinamically로드되며 ios 및 Android 앱에 사용할 수있는 해상도는 하나뿐입니다.UIImage를 UIImageView로 조정하십시오

그래서, 내가 폭을 가로 세로 비율과 규모를 유지하기 위해 이미지를 필요, 내가 UIViewContentModeScaleAspectFillUIImageView 콘텐츠 모드를 설정하지만 이미지를 중심으로, 그래서 모두 상단과 하단을 위해 화면을 벗어나, 이미지 있도록 설계됩니다 바닥은 불필요합니다.

어떻게 이미지를 왼쪽 상단 구석에 맞출 수 있습니까?

UIImageView도 나를 위해 너비를 조절할 수 있습니까? 또는 어떻게 할 수 있습니까?

미리 감사드립니다.

이 편집 :

내가 setcliptobounds을 시도하고 그 이미지 뷰의 크기로 이미지를 잘라, 내 문제가되지 이잖아.

UIViewContentModeTopLeft은 잘 작동하지만 이제는 UIViewContentModeScaleAspectFill을 적용 할 수 있습니까? 아니면 둘 다 적용 할 수 있습니까?

+0

가능한 복제 [UIViewContentModeScaleAspectFill not clipping] (http : // stackoverflow.com/questions/6638623/uiviewcontentmodescaleaspectfill-not-clipping) – Peres

+0

UIViewContentModeTopLeft 사용 – Moxy

+0

이 [imageView setClipsToBounds : YES]를 사용하십시오. –

답변

9

을 유지합니다.

선택한 너비의 새 이미지를 만드는 UIImage에 카테고리를 사용할 수 있습니다.

@interface UIImage (Scale) 

-(UIImage *)scaleToWidth:(CGFloat)width; 

@end 

@implementation UIImage (Scale) 

-(UIImage *)scaleToWidth:(CGFloat)width 
{ 
    UIImage *scaledImage = self; 
    if (self.size.width != width) { 
     CGFloat height = floorf(self.size.height * (width/self.size.width)); 
     CGSize size = CGSizeMake(width, height) 

     // Create an image context 
     UIGraphicsBeginImageContext(size); 

     // Draw the scaled image 
     [self drawInRect:CGRectMake(0.0f, 0.0f, size.width, size.height)]; 

     // Create a new image from context 
     scaledImage = UIGraphicsGetImageFromCurrentImageContext(); 

     // Pop the current context from the stack 
     UIGraphicsEndImageContext(); 
    } 
    // Return the new scaled image 
    return scaledImage; 
} 

@end 

하면 이미지

UIImage *scaledImage = [originalImage scaleToWidth:myImageView.frame.size.width]; 
myImageView.contentMode = UIViewContentModeTopLeft; 
myImageView.image = scaledImage; 
+0

너비는 같지만 높이가 아님. 가로 세로 비율을 유지해야합니다. – Nanoc

+0

나는 당신이 원하는 것을 오해했습니다. 나는 -scaleToWidth를 편집했다. 지금은 정확해야한다. – Moxy

+0

나 자신을했지만 아직도 유용하다. 고마워. – Nanoc

0

UIViewUIImageView의 수퍼 클래스는 contentMode입니다. 이미지의 왼쪽 상단 정렬에 다음 상수를 사용할 수 있습니다.

UIViewContentModeTopLeft 

Aligns the content in the top-left corner of the view. 

당신은 이미지 뷰의 폭에 맞게 이미지 크기를 조정 할 수 화면 비율

UIViewContentModeScaleAspectFit 

Scales the content to fit the size of the view by maintaining the aspect ratio. Any remaining area of the view’s bounds is transparent. 
+0

니스, 첫 번째 질문을 해결, 어떻게 UIImageView 너비로 이미지 크기를 조정할 수 있습니까? – Nanoc

+0

가로 세로 비율을 유지하려면이 작업을 수행 할 수 없습니다. image.size.width를 사용하여 이미지 너비를 가져 오지 않는 이유는 무엇입니까? 이것을 사용하여 UIImageView의 너비를 변경하십시오. 당신이 당신의 심상을 기지개하지 말라보다는. –

+0

이미지가 화면보다 클 것입니다. – Nanoc

0

당신은있는 UIImageView와 화면 비율을 둘 정렬 및을 유지할 수를 확장하는 데 사용할 수 있습니다이 방법은 그러나이 만드는 UIImageViewAligned 이름있는 UIImageView의 큰 서브 클래스가 가능합니다. 이 프로젝트는 github here에서 찾을 수 있습니다. 다음과 같이 당신이해야 할 일은
은 다음과 같습니다 UIImageViewAligned 마스터에서

  1. 먼저 복사 헤더 및 구현/UIImageViewAligned/프로젝트
  2. 보기에 IB에서 개체 라이브러리에서 이미지 뷰 객체를 삽입합니다. 유틸리티에서 신원 Inspector에서 UIImageViewAligned에 이미지 뷰의
  3. 변경 클래스 창
  4. 그런 다음 사용자 정의 런타임의 주요 경로로 원하는 정렬을 추가 그것의 신원 경위

의 속성 섹션. 프로젝트를 실행하여이를 확인하십시오.

+0

물론 내가 할 수있어, Moxy 대답은 완벽하게 작동합니다. – Nanoc

관련 문제