2012-07-16 3 views
0

응용 프로그램의 이미지보기 부분에서 작업 중이며 이미지의 크기를 조정하거나 화면에 맞추는 방법을 찾고 있습니다. 내 설정은 현재 다음과 같습니다.Objective-C의 화면 크기에 이미지를 맞추는 방법

photos = [[NSMutableArray alloc]init]; 

Photo *pic = [[Photo alloc]init]; 
[pic setName:@"Picture"]; 
[pic setFilename:@"Pic.jpeg"]; 
[pic setNotes:@"Description"]; 
[photos addObject:pic]; 

pic = [[Photo alloc]init]; 
[pic setName:@"Picture2"]; 
[pic setFilename:@"pic2.jpeg"]; 
[pic setNotes:@"Description2"]; 
[photos addObject:pic]; 

pic = [[Photo alloc]init]; 
[pic setName:@"Picture3"]; 
[pic setFilename:@"Pic3.jpeg"]; 
[pic setNotes:@"Description3"]; 
[photos addObject:pic]; 

pic = [[Photo alloc]init]; 
[pic setName:@"Picture4"]; 
[pic setFilename:@"Pic4.jpeg"]; 
[pic setNotes:@"Description4"]; 
[photos addObject:pic]; 

그리고 여기가 나의 이미지가 화면에 맞도록 추가되어야 어떤 코드 SEGUE 방법

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 

    if ([segue.identifier isEqualToString:@"ShowPhoto"]) 
    { 
     DisplayViewController *dvc = [segue destinationViewController]; 
     NSIndexPath *path = [self.tableView indexPathForSelectedRow]; 
     Photo *c = [photos objectAtIndex:path.row]; 
     [dvc setCurrentPhoto:c]; 
    } 
} 

준비인가?

+1

화면의 이미지 뷰를 사용 하시겠습니까? –

+0

Iphone 화면보다 큰 해상도의 사진이 레터 박스되어 전체 이미지가 표시되도록하는 것이 좋습니다. – Snorf

+0

그러면 'imageMode'가'UIViewContentModeScaleAspectFit'으로 설정된 상태에서 이미지의 크기를 화면 크기로 변경하면됩니다. –

답변

2

귀하의 UIImageView는 UIView의 하위 클래스입니다. UIViewContentMode 속성을 설정할 수 있습니다. 귀하의 옵션은 다음과 같습니다 :

typedef enum { 
    UIViewContentModeScaleToFill, 
    UIViewContentModeScaleAspectFit, 
    UIViewContentModeScaleAspectFill, 
    UIViewContentModeRedraw, 
    UIViewContentModeCenter, 
    UIViewContentModeTop, 
    UIViewContentModeBottom, 
    UIViewContentModeLeft, 
    UIViewContentModeRight, 
    UIViewContentModeTopLeft, 
    UIViewContentModeTopRight, 
    UIViewContentModeBottomLeft, 
    UIViewContentModeBottomRight, 
} UIViewContentMode; 

나는 당신이 ScaleAspectFit을 찾고 있다고 믿습니다.

0

화면의 크기 인 UIImageView를 만듭니다. 귀하의 모든 사진이 뻗어되지 않을 옳은 비율이 아니라고 가정합니다. 그래서 이전에 UIImageView (지금부터는 backImageView라고 부름)를 흰색으로 설정하거나 배경색을 설정하십시오. 이미지의 배경. 그런 다음 view의 viewDidLoad에서 원래의 종횡비를 유지하면서 가능한 한 큰 UIImageView를 만든 다음 새 UIImageView 위에 놓습니다. 이런 식으로 뭔가 :이 일부 조정이 필요할 수 있습니다

double x = pic.size.width; 
double y = pic.size.height; 
if(x != 0 && y != 0){ 

    double ratio = x/y; 
    CGRect cellImageFrame = backImageView.frame; 
    UIImageView *actualPic = [[UIImageView alloc] init]; 

    if(y <= 320){ 
      if(x < 320){ 

       y = 320; 
       x = y*ratio; 
       double xoffset = cellImageFrame.size.width -x; 
       cellImageFrame = CGRectMake(cellImageFrame.origin.x + (xoffset/2), cellImageFrame.origin.y+2, x, y); 
      }else{ 
       x = 320; 
       y = x/ratio; 
       double yoffset = cellImageFrame.size.height -y; 
       cellImageFrame = CGRectMake(cellImageFrame.origin.x+2, cellImageFrame.origin.y + (yoffset/2), x, y); 

      } 
     }else{ 
      y = 320; 
      x = ratio*y; 
      if(x < 320){ 
       double xoffset = cellImageFrame.size.width -x; 
       cellImageFrame = CGRectMake(cellImageFrame.origin.x + (xoffset/2), cellImageFrame.origin.y+2, x, y); 
      }else{ 
       x = 320; 
       y = x/ratio; 

       double yoffset = cellImageFrame.size.height -y; 
       cellImageFrame = CGRectMake(cellImageFrame.origin.x+2, cellImageFrame.origin.y + (yoffset/2), x, y); 

      } 
     } 

     actualPic.image = pic; 
     actualPic.frame = cellImageFrame; 

, 내 코드는 전체 화면 아니었다 나는 그것을 수정하려고하지만 난 내가 확신 할 수 없다 지금 그것을 테스트 할 수 없습니다. 기본적으로 치수와 종횡비를 파악한 다음 화면보다 큰지 알아보십시오. 그렇다면 키가 너비보다 넓거나 사각형인지 확인하고 그에 따라 크기를 조정하십시오. 이것은 이미지를 확대하는 것을 고려하지 않습니다. 원하는 경우 최소 크기의 검사를 실행 한 다음 가로 세로 비율을 사용하여 늘리십시오. 프레임을 원하는 크기로 설정하면 이미지를 설정하면 UIViewContentModeScaleAspectFit이있는 한 이미지가 프레임을 자동으로 채 웁니다.

관련 문제