이 블로그에서 사용한 이미지와 소스의 출처는
http://iosdevelopertips.com/user-interface/ios-5-uiimage-and-resizableimagewithcapinsets.html 이며 이 블로그의 내용을 다소 수정하여 설명하도록 합니다.

우선 화면상에 간단하게 이미지를 바탕으로 하는 버턴을 만드는 방법부터 알아보겠습니다.

다음 그림은 40x46 픽셀 크기의 blueButton.png 라는 이미지로 버턴 모양을 하고 있지만
세로로 약간 더 긴 형태로 되어 있습니다.

사용자 삽입 이미지


이 이미지를 버턴으로 사용하는 코드는 다음과 같습니다.

    int buttonOffset = 70;

    

    // 버턴 이미지 사용해서 edgeInset 테스트해 보자

    UIImage *buttonImage = [UIImage imageNamed:@"blueButton.png"];


    // button0 width=40, height=46 blueButton.png 화면에 그대로 출력

    UIButton *button0 = [[UIButton alloc] initWithFrame:CGRectMake(140,70,40,46)];

    [button0 setBackgroundImage:buttonImage forState:UIControlStateNormal];

    [[self view] addSubview:button0];



이와 같이 buttonImage를 배경 이미지로 하는 button0을 만들고 이를 현재 뷰의 자식 뷰로 추가하게되면 화면상에 다음과 같은 버턴을 볼 수 있습니다.

사용자 삽입 이미지


이 버턴을 160x46 크기로 늘여서 화면에 출력해 보겠습니다.

    // button1 (40,46) 크기의 버턴을 (160, 46)으로 늘여서 화면에 보여준다

    // 결과 화면에는 이미지가 늘어나면서 비정상적으로 보인다

    UIButton *button1 = [[UIButton alloc] initWithFrame:CGRectMake(80,70+buttonOffset*1,

                                                                   160, 46)];

    [button1 setTitle:@"Button1" forState:UIControlStateNormal];

    [button1 setBackgroundImage:buttonImage forState:UIControlStateNormal];

    [[self view] addSubview:button1];



그러면 다음과 같은 버턴을 볼 수 있을 것입니다.

사용자 삽입 이미지


배경이미지로 blueButton.png 가 나타나기는 하지만 40x46 픽셀 크기 원본 이미지를 160x46 크기 버턴 객체의 배경으로 하다보니 부자연스러운 이미지가 나타나는 것을 볼 수 있습니다.

이제 이 blueButton.png 이미지를 사용하여 새로운 (top=0, left=16, bottom=0, right=16) 크기의 inset 사각형을 내부에 만들어서 이 이미지를 resizableImage로 지정합니다.

모서리(edge) 삽입(inset) 사각형은 다음과 같은 구조체 형식으로 top, left, bottom, right 값으로 이루어져 있습니다.

typedef struct {
   CGFloat top, left, bottom, right;
} UIEdgeInsets;

사용자 삽입 이미지


 UIEdgeInsetsMake(0, 16, 0, 16) 를 이용하여 edge inset 은 점선 내부의 사각형 영역이 됩니다.

이 때 이 사각형은 resize될 때 capInset (둥근 모서리 인셋)값으로 inset 사각형을 사용하게 됩니다. resizeableImageWithCapInset 메소드는 iOS 5.0부터 사용가능한 메소드로 모서리가 둥근 버턴을 앱에서 사용할때 주로 사용되는데 둥근모서리를 만들기 위해서 inset 사각형의 외부를 확장시켜서 이것을 이용하여 이미지를 확장시키는 기능을 가지고 있습니다.


    UIImage *insetButtonImage1 = [[UIImage imageNamed:@"blueButton.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 16, 0, 16)];


    // 이제 (40,46) 크기의 버턴을 (160, 46) 크기로 늘이면 버턴의 배경이미지는

    // 스트레칭되는 것이 아니라 모서리 인셋 값을 (0, 16, 0, 16) 하는 크기로 늘어나게

    // 된다.

    UIButton *button2 = [[UIButton alloc] initWithFrame:CGRectMake(80,70+buttonOffset*2,

                                                                   160, 46)];

    [button2 setTitle:@"Button2" forState:UIControlStateNormal];

    [button2 setBackgroundImage:insetButtonImage1 forState:UIControlStateNormal];

    [[self view] addSubview:button2];





UIImage 에서 resizableImageWithCapInsets 메소드를 사용하여 만든 insetButtonImage1을 배경으로 하는 버턴은 다음과 같은 모양를 가지게 된다. 위의 코드를 이용하여 버턴을 만들게 되면 다음과 같은 자연스러운 버턴을 얻을 수 있습니다.

사용자 삽입 이미지



이제 버턴의 크기를 크게 만드는 경우를 생각해 봅니다. 위의 코드에서 아래와 같이 버턴의 프레임 너비와 높이를 160x66으로 만들어 봅니다.

    UIImage *insetButtonImage2 = [[UIImage imageNamed:@"blueButton.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 16, 0, 16)];

    // 이제 (40,46) 크기의 버턴을 (160, 66) 크기로 만들어 보자

    UIButton *button3 = [[UIButton alloc] initWithFrame:CGRectMake(80,70+buttonOffset*3,

                                                                   160, 66)];

    [button3 setTitle:@"Button3" forState:UIControlStateNormal];

    [button3 setBackgroundImage:insetButtonImage2 forState:UIControlStateNormal];

    [[self view] addSubview:button3];   

위의 코드를 실행시키면 다음과 같은 결과를 얻을 수 있습니다.


사용자 삽입 이미지

이미지의 edge inset 값이 (0,16,0,16)이므로 이 값을 cap inset으로 할 경우 오왼쪽, 오른쪽 inset 값을 16 픽셀씩 사용하여 이 이미지를 160x66 이미지의 왼쪽과 오른쪽에 넣을 수 있으나 위, 아래는 0픽셀을 사용하므로 그림과 같은 부자연스러운 결과를 보여주고 있습니다.


이제 이 코드를 다음과 같이 약간 수정해 봅니다.


    UIImage *insetButtonImage3 = [[UIImage imageNamed:@"blueButton.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(15, 16, 15, 16)];

   

    // 이제 (40,46) 크기의 버턴을 (160, 66) 크기로 늘이면 버턴의 배경이미지는

    // 스트레칭되는 것이 아니라 모서리 인셋 값을 (15, 16, 15, 16) 하는 크기로 늘어나게

    // 된다.

    UIButton *button4 = [[UIButton alloc] initWithFrame:CGRectMake(80,70+buttonOffset*4,

                                                                   160, 66)];

    [button4 setTitle:@"Button4" forState:UIControlStateNormal];

    [button4 setBackgroundImage:insetButtonImage3 forState:UIControlStateNormal];

    [[self view] addSubview:button4];


이제 버턴 이미지의 모서리 inset 값을 (15, 16, 15, 16)으로 하여 이것을 cap inset 값으로 주게되면 이미지의 왼쪽, 오른쪽 뿐만아니라 위,아래로 15 픽셀을 둥근 모서리 값으로 사용하게 되어 다음과 같은 결과를 얻을 수 있습니다.


사용자 삽입 이미지
 

원본 이미지에 약간의 그레디에이션이 있어서 약간 부자연스러운 버턴이 되지만 그레디에이션을 빼게되면 단색의 버턴 배경이미지를 얻을 수 있습니다.

현재 블로그에 zip 파일이 포스팅되이 않는 버그가 있어 임시로 아래 주소에 소스를 포스팅 합니다.

소스코드 :

http://ivis.cwnu.ac.kr/zbxe/?mid=ivis_pds&document_srl=81792

결과는 아래와 같습니다.

사용자 삽입 이미지

2013/05/11 23:06 2013/05/11 23:06
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://ivis.changwon.ac.kr/tc/dongupak/rss/response/208

댓글+트랙백 ATOM :: http://ivis.changwon.ac.kr/tc/dongupak/atom/response/208

예전에 만든 Cocos2d 프로그램을 XCode 4.2에서 컴파일하다보면
Multiple method named 'initWithColor:' found 오류를 다음과 같이 보게된다

사용자 삽입 이미지

layerWithColor: 메소드에 있는 initWithColor: 메소드를 찾을 수 없다는 오류인데, 이 경우 (CCColorLayer *) 를 [self alloc] 앞에 넣어서 캐스팅을 해 준다.


사용자 삽입 이미지
그러면 깔끔하게 오류해결...


2013/05/10 20:44 2013/05/10 20:44
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://ivis.changwon.ac.kr/tc/dongupak/rss/response/207

댓글+트랙백 ATOM :: http://ivis.changwon.ac.kr/tc/dongupak/atom/response/207

페이스북 이야기

2011년 1월 오레곤 주립대학의 어류학자 Brian Sidlauskas 박사는 남미 가이아나의 Cuyuni강을 따라 어류수집을 한 후 5000여 마리 가량의 많은 고기 샘플을 채쥐합니다.

그러나 가이아나 이민국의 정책은 이들에 대한 카타로그를 제출할 것을 요구합니다. 빡빡한 일정에 이들에 대한 분류 카타로그를 만들 시간이 부족했던 팀은 이 사진을 페이스북에 올려 도움을 요청하고, 한번도 본적 없는 페북의 많은 친구들에 의한 협동작업으로 24시간에 분류작업을 완수하게 됩니다.

1. Youtube link
 http://www.youtube.com/watch?v=8hhXZwLFfao


2. embedded video



2013/05/06 18:42 2013/05/06 18:42
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://ivis.changwon.ac.kr/tc/dongupak/rss/response/206

댓글+트랙백 ATOM :: http://ivis.changwon.ac.kr/tc/dongupak/atom/response/206

페이스북 이야기 - 다니엘 쿠이



2013/05/06 18:31 2013/05/06 18:31
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://ivis.changwon.ac.kr/tc/dongupak/rss/response/205

댓글+트랙백 ATOM :: http://ivis.changwon.ac.kr/tc/dongupak/atom/response/205

이 자료는 이영록씨가 제2회 아이폰 개발자 포럼행사에서 발표한 자료를 업데이트한 자료입니다.

iOS에서는 객체들을 동적으로 생성하고 관리하다 보니 java나 C# 언어에 비해 배우는 과정에서 많은 어려움을 느낀다고 합니다. 지난 iOS 개발자 포럼 행사에서 이영록씨께서 이 부분을 설명하는 강연을 해 주셨는데 이 자료를 조금 수정하고, Automatic Reference Counting에 대한 정보도 추가하여 자료를 만들어 보았습니다.

공부하시거나 강의시에 사용하시면 도움이 될것 같습니다.



조언은 dongupak @ 쥐메일로 주십시오.


1. 스크린 샷


사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지


2. PDF 파일
- 각각의 빌드 단계 프린터 기능을 이용하여 200페이지 가량의 분량이 됩니다




 



2013/05/03 19:06 2013/05/03 19:06
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://ivis.changwon.ac.kr/tc/dongupak/rss/response/204

댓글+트랙백 ATOM :: http://ivis.changwon.ac.kr/tc/dongupak/atom/response/204

이 자료는 윤성관씨의 책을 바탕으로 iOS용 어플리케이션을 만드는 간단한 튜토리얼 예제입니다.



1. 스크린 샷

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
2. PDF 파일


2013/05/03 18:57 2013/05/03 18:57
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://ivis.changwon.ac.kr/tc/dongupak/rss/response/203

댓글+트랙백 ATOM :: http://ivis.changwon.ac.kr/tc/dongupak/atom/response/203

Objective-C의 메모리 관리기법에 대하여 설명하는 자료입니다.

@property와 setter/getter에 대하여도 다루고 있습니다.

1. 스크린 샷
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
2. PDF 자료

2013/05/03 18:52 2013/05/03 18:52
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://ivis.changwon.ac.kr/tc/dongupak/rss/response/202

댓글+트랙백 ATOM :: http://ivis.changwon.ac.kr/tc/dongupak/atom/response/202

Objective-C 입문자를 위한 강의자료입니다.

절차적 프로그래밍과 객체지향 프로그래밍에 대하여 간략하게 다루고 있습니다.

1. 자료 스크린 샷

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지


2. PDF 파일


2013/05/03 18:48 2013/05/03 18:48
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://ivis.changwon.ac.kr/tc/dongupak/rss/response/201

댓글+트랙백 ATOM :: http://ivis.changwon.ac.kr/tc/dongupak/atom/response/201

2011년 8월 24일 창원시의회 제5회 명사초청 의정연찬회에 특강을 하게
되었습니다.

이 특강자리에서 발표한 Social Network 자료를 공유합니다.

1. 스크린 샷
사용자 삽입 이미지

사용자 삽입 이미지

2. PDF 파일


2013/04/30 10:32 2013/04/30 10:32
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://ivis.changwon.ac.kr/tc/dongupak/rss/response/200

댓글+트랙백 ATOM :: http://ivis.changwon.ac.kr/tc/dongupak/atom/response/200

유니티 개요

컴퓨터그래픽스 RSS Icon ATOM Icon 2013/04/25 15:08 박동규
2013년 3월 iOS 개발자 포럼에서 발표한 Unity 강좌 자료입니다.


강연제목은 "Unity 개요 & 특징"으로 약 두시간에 걸쳐 유니티 개발 소프트웨어와 간단한 콘텐츠 개발 예제를 다루어 보았습니다.




2013/04/25 15:08 2013/04/25 15:08
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://ivis.changwon.ac.kr/tc/dongupak/rss/response/199

댓글+트랙백 ATOM :: http://ivis.changwon.ac.kr/tc/dongupak/atom/response/199