본문 바로가기
프로그래밍/iOS

iOS 이미지 확대/축소

by 백룡화검 2012. 1. 6.

아이폰의 기능중 이미지를 멀티 터치로 확대/축소 하는 기능을 구현해 보자...

아주 아주 간단하다~!!! 



Step1.

먼저 Window base의 프로젝트를 생성한다.

프로젝트 이름은 ImageZoomTest로 하자! 

Step2.

새로운 클래스를 하나 만든다.,,,NSObject를 상속받는 클래스를 하나 만들자.
이름은 간단하게 MyImageZoom로 하자

Step 3.
 아래 처럼 상속 구조를 NSObject => UIScrollView로 변경하자.

// 기존

@interface MyImageZoom : NSObject {

    

}


@end

//변경후


@interface MyImageZoom : UIScrollView {

    

}


@end 

Step 4. UIScrollView 관련 delegate추가 하자 , 또한 화면에 그려줄 UIImageView를 추가해주자


@interface MyImageZoom : UIScrollView <UIScrollViewDelegate>{

    UIImageView * imageView;

}


@property (nonatomic,retain)UIImageView * imageView;


@end



Step5. 이제 MyImageZoom Class구현을 하자  아래 코드에 주석으로 설명을 달았으니 참고를,,,,,

#import "MyImageZoom.h"



@implementation MyImageZoom


@synthesize  imageView;



-(id)initWithFrame:(CGRect)frame

{

    if(self = [super initWithFrame:frame])

    {

// 확대/축소할 이미지를 불러오자....
// image0.jpg라는 이미지를 프로젝트 resource 폴더에 드래그해서 추가해야한다.... 

        UIImage *testImage = [UIImage imageNamed:@"image0.jpg"];

        imageView = [[UIImageView alloc]initWithImage:testImage];

// 이미지를 해상도 비율에 맞게 리사이징한다....

        imageView.contentMode = UIViewContentModeScaleAspectFit;

// 확대/축소시 비율을 맞게 설정한다...

        imageView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

 
// 화면에 보여줄 이미지 뷰어의 크기를 설정한다.. 

        [imageView setFrame:CGRectMake(0, 0, testImage.size.widthtestImage.size.height)];

        [self addSubview:imageView];

        [imageView release];

        

        self.delegate = self;

        // 확대.축소 배율을 정하자

        self.maximumZoomScale = 1.0f;

        self.minimumZoomScale = 0.4f;

        

        [self setContentSize:CGSizeMake(testImage.size.widthtestImage.size.height)];

        [self setZoomScale:self.minimumZoomScale];

        

    }

    

    return self;

}


// UIScrollView에게 확대 / 축소될 녀석이 누군인지 알려주자

-(UIView*)viewForZoomingInScrollView:(UIScrollView *)scrollView

{

    return imageView;

}


@end


@end




Step 6. 이제 ImageZoomTestAppDelegate.m 파일에 가서 아래처럼 코딩하자..window에게 view 설정만 하면된다
 


#import "ImageZoomTestAppDelegate.h"

#import "MyImageZoom.h"


@implementation ImageZoomTestAppDelegate



@synthesize window=_window;


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

    // Override point for customization after application launch.

    MyImageZoom * myZoom = [[MyImageZoom alloc]initWithFrame:[[UIScreen mainScreen]bounds]];

    [self.window addSubview:myZoom];

    [self.window makeKeyAndVisible];

    return YES;


   실행후 option + 마우스 이동하면 멀티 터치를 확인할수 있습니다
 
여기까지가 UIScrollView를 이용한 UIImage 확대/축소[Zoom in/out] 기능 구현이 었습니다 


출처 : http://dongss.tistory.com/38