iOS2012. 9. 13. 13:49

UIImageView를 터치했을 경우의 이벤트를 얻어야 할 경우.
UIControl을 이용해 이벤트를 얻어온다.

1. UIImageView 생성.
2. UIControl 타입의 mask 생성.
3. mask 에 imageView 자식 뷰로 추가
4. mask 에 이벤트 설정.
5. 현재의 뷰컨트롤러의 뷰에 자식뷰로 mask 추가.



    UIImage * image = [UIImage imageNamed:@"sexy.jpg"];

    UIImageView * imageView = [[[UIImageView allocinitWithImage:image] autorelease];

    [imageView setFrame:CGRectMake(10.0f10.0f90.0f90.0f)];

    [imageView.layer setBorderColor:[[UIColor grayColorCGColor]];

    [imageView.layer setBorderWidth:1.0];

    [imageView.layer setCornerRadius:10.0];

    [imageView.layer setMasksToBounds:YES];

    

    UIControl * mask = [[[UIControl allocinitWithFrame:imageView.frameautorelease];

    

    CGSize imageSize = imageView.frame.size;

    imageView.frame = CGRectMake(00, imageSize.width, imageSize.height);

    [mask addSubview:imageView];

    

    [mask addTarget:self action:@selector(cancelButtonPush:) forControlEvents:UIControlEventTouchUpInside];

    

    [self.view addSubview:mask];

Posted by 다오나무
iOS2012. 9. 13. 11:02

UIImageView를 둥글게 제가 사용한 방법 입니다.
#import <QuartzCore/QuartzCore.h> 이렇게 한 후
imageView.layer.masksToBounds = YES;
imageView.layer.cornerRadius = 5;
이걸 쓰면 둥글게 되더군요.
cornerRadius 의 수치가 둥글게 정도의 수치구요.

Posted by 다오나무
영삼이의 IT정보2012. 6. 13. 10:37

UIImageView는 참 편리하게 여기저기 많이 사용됩니다. 로컬에 있는 이미지들을 화면에 뿌려줄 때 참 좋죠. 하지만 이미지가 http://www.xxx.xx/123.jpg라면 어떻게 보여줄 수 있을지 한번 살펴보겠습니다.


UIImageView * couponImageView =

                   [UIImageView alloc] initWithFrame:CGRectMake(0,0,100,100)];

[couponImageView setImage:

            [UIImage imageWithData:

                  [NSData dataWithContentsOfURL:

                         [NSURL URLWithString:@"http://www.xxx.xx/123.jpg"]]]];


이렇게 하면 URL에 있는 이미지를 바로 UIImageView로 뿌려줄 수 있습니다. 당연히 UIImage형태가 들어가는 모든곳에서 NSData를 이용해서 이미지를 뿌려줄 수 있는데요. 버튼이나 라벨등에도 사용 가능합니다.


한발 더 나아가서, 만약 이미지를 asynch로 가져와서 NSData로 데이터를 다 받은 다음 뿌려주도록(물론 데이터를 받아오는 도중에는 인디케이터 같은걸 돌려서 사용자가 앱이 작동중이라는 사실을 확인할 수 있도록 해야겠죠.)할 수 있을까요?


UIImageView는 이미지가 다 로드 되었는지 아닌지를 확인하는 이벤트를 전혀 발생시켜주지 않습니다.


하지만 다른 방법으로 원하는 이벤트를 받을 수 있는데요.

NSMutableURLRequest * request =

           [NSMutableURLRequest requestWithURL:

                   [NSURL URLWithString:@"http://www.xxx.xx/123.jpg"]];
    
[NSURLConnection

          sendAsynchronousRequest:request

          queue:[[[NSOperationQueue alloc] init] autorelease]

          completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {            
        //데이터를 다 받은 경우
        if (data) {
            [couponImageView setImage:[UIImage imageWithData:data]];
        }
        //데이터를 받지 못한 경우
        else {
        }
    }];

이렇게 이미지 URL을 뿌려주고 다 받은 경우의 이벤트를 사용할 수 있겠습니다.

Posted by 다오나무