는, 두 개의 서로 다른 크기의 이미지가 상당히 동일하게 표시 할 수 없습니다
다음은 크기 조정 모드를 설정하는 데 사용하는 코드입니다. 그러나 이미지를 세 부분으로 나눌 수 있습니다 : 왼쪽 모서리, 중간 섹션 (단지 평행선) 및 오른쪽 모서리.
다양한 크기의 이미지보기를 만들려면 왼쪽 및 오른쪽 부분을 일정하게 유지하고 높이를 일정하게 유지하는 한 왜곡되지 않는 중간 부분의 크기를 조정하십시오.
높이가 원래 이미지 높이이기 때문에 나는 fitInRect
의 높이를 77로 지정했습니다. 예를 들어 44로 변경할 수 있지만 모든 이미지보기의 숫자는 일정하게 유지하십시오. 마지막으로, widthToPreserve
HAS는 최소 34입니다 (즉, 전체 Rect 폭은 68 이상이어야 함). 원래 이미지에서 둥근 가장자리의 너비이기 때문입니다.
물론 목표 이미지보기 높이가 44 인 경우 더 작은 이미지를 사용하여이 모든 것을 간단하게 수행 할 수 있습니다.
이 코드는 작동 :
가
-(void)viewDidAppear:(BOOL)animated
{
UIImage *img = [UIImage imageNamed:@"img"];
UIImageView *view1 = [self getImageViewFromImage:img widthToPreserve:34 fitInRect:CGRectMake(20, 20, 100, 77)];
UIImageView *view2 = [self getImageViewFromImage:img widthToPreserve:34 fitInRect:CGRectMake(20, 120, 250, 77)];
[self.view addSubview:view1];
[self.view addSubview:view2];
}
-(UIImageView*)getImageViewFromImage:(UIImage*)image widthToPreserve:(float)width fitInRect:(CGRect)rect
{
CGImageRef left, middle, right;
CGRect leftRect, middleRect, rightRect;
UIImage *leftImage, *middleImage, *rightImage;
UIImageView *leftView, *middleView, *rightView;
// calculate CGRect values for the original image
leftRect = CGRectMake(0, 0, width, image.size.height);
middleRect = CGRectMake(width, 0, image.size.width - 2*width, image.size.height);
rightRect = CGRectMake(image.size.width - width, 0, width, image.size.height);
left = CGImageCreateWithImageInRect([image CGImage], leftRect);
middle = CGImageCreateWithImageInRect([image CGImage], middleRect);
right = CGImageCreateWithImageInRect([image CGImage], rightRect);
leftImage = [UIImage imageWithCGImage:left];
middleImage = [UIImage imageWithCGImage:middle];
rightImage = [UIImage imageWithCGImage:right];
leftView = [[UIImageView alloc] initWithImage:leftImage];
middleView = [[UIImageView alloc] initWithImage:middleImage];
rightView = [[UIImageView alloc] initWithImage:rightImage];
//make your image subviews, with scaling on the middle view
[leftView setFrame:CGRectMake(0, 0, width, rect.size.height)];
[middleView setFrame:CGRectMake(width, 0, rect.size.width - 2*width, rect.size.height)];
[rightView setFrame:CGRectMake(rect.size.width - width, 0, width, rect.size.height)];
//add your 3 subviews into a single image view
UIImageView *imgView = [[UIImageView alloc] initWithFrame:rect];
[imgView addSubview:leftView];
[imgView addSubview:middleView];
[imgView addSubview:rightView];
CGImageRelease(left);
CGImageRelease(middle);
CGImageRelease(right);
return imgView;
}
스크린 샷 : 1이 좁은
![enter image description here](https://i.stack.imgur.com/s8Azf.png)
이미지 뷰의 문제점들이 원본 이미지보다 (높이)보다 작은 것으로된다 (및 너무). 크기 조정이 가능한 이미지는 원래 크기보다 커야합니다. – rmaddy