영삼이의 IT정보2012. 6. 14. 12:29
Posted by 다오나무
영삼이의 IT정보2012. 6. 14. 11:17

방법1. number_format(값,자리수); 함수 사용

예---------------------------------------

코드.

<?

$char = 1234;

 echo number_format($char,2);

?>

 

실행 결과.

1,234.00

-----------------------------------------
1,234.00 이라는 소수점 두 자리까지의 처리 결과를 돌려 준다.

일반적으로 number_format() 함수는 숫자를 금액 단위로 표현하여

화면에 보여주려고 할 경우 많이 사용하는 함수입니다.

 

 

방법2. floor(); 함수 사용

예---------------------------------------

코드.

<?

$char = 1234.123;

$char2 = floor($char*10000))/100

 echo ($char2);

?>

 

실행 결과.

1234.12

-----------------------------------------

1234.123값을 123412.3으로 만든 다음 floor()함수를 써서 정수값만 가져온다.

그런다음 /100을 해서 소수점 두자리까지의 값을 가져온다.

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 다오나무
영삼이의 IT정보2012. 6. 12. 21:09

svn merge 작업은 몇달에 한번씩만 하다보니 명령어를 까먹어서 매번 검색을 하는거 같다.
그냥 내 블로그에 정리를 해두자~

"1.1-stable" 이라는 브랜치의 작업 내용을 "trunk"에 반영(merge) 작업을 한다고 가정함. 

1. "1.1-stable"이 최초로 생성된 revision을 얻는다. 아래의 명령어를 이용하여 가장 밑에 로그 revision을 확인함.

$ svn log --stop-on-copy svn://www.test.com/test/branches/1.1-stable


2. 1에서 얻은 revision이 3000일 경우 "trunk"로 이동하여 아래의 명령어와 --dry-run 옵션을 추가로 이용하여 가상으로 merge 결과를 확인해본다. (--dry-run 옵션은 실제로 merge 작업을 하지 않고 merge 결과만 보여준다.)
아래의 명령은  revision 3000~최신 까지 "1.1-stable" 브랜치에서 작업된 내용을 "trunk"에 가상으로 반영해본다는 내용이다.

$ cd trunk
$ svn merge --dry-run -r3000:HEAD svn://www.test.com/test/branches/1.1-stable ./


3. 2의 결과를 보고 별다른 문제가 없으면 --dry-run을 제거하고 실제로 merge를 실행한다. 이때 소스코드에서 충돌이 발생하면 충돌난 부분을 찾아서 수정해준다.

$ svn merge -r3000:HEAD svn://www.test.com/test/branches/1.1-stable ./


4. merge가 완료된 trunk 코드를 diff 나 기타 방식대로 점검을 해본다.(귀찮거나 자신있으면 생략~ ^^)

$ svn diff | vi -


5. merge된 trunk를 commit 하여 작업을 완료한다. 

$ svn commit -m "브랜치 1.1-stable 작업 내역을 trunk에 반영함"



이제 merge된 코드를 빌드하여 테스트를 즐긴다~



Posted by 다오나무
영삼이의 IT정보2012. 6. 12. 18:00

참고 : http://seino-takahiro.blogspot.com/2009/04/mac-os-x-105-leopard-svn.html


1. svn디렉토리생성

    svnadmin create /Users/seungbeomi/Sites/svn

    sudo chown -R www /Users/seungbeomi/Sites/svn


2. 체크아웃 테스트

    svn co file:///Users/seungbeomi/Sites/svn


3. svn 기본디렉토리생성(svn/repos)

    mkdir trunk branches tags


4. import

    svn import -m "init" . file:///Users/seungbeomi/Sites/svn


5. apache의 httpd.conf파일 수정

    open -a macvim /etc/apache2/httpd.conf


    LoadModule dav_svn_module libexec/apache2/mod_dav_svn.so     # 모듈은 /usr/libexec/apache2/에 있다

    <Location /repos>
    DAV svn
    SVNPath /Users/seungbeomi/Sites/svn
    </Location>

    

6. apache기동

    시스템환경설정 > 공유 > 웹 공유


7. svn 접속

    http://localhost/repos/

'영삼이의 IT정보' 카테고리의 다른 글

이미지 URL을 UIImageView로 바로 뿌려주기  (0) 2012.06.13
svn merge 방법  (0) 2012.06.12
mac os x 에 apache module dav_svn 설치하기.  (0) 2012.06.12
맥용 SVN 서버 설치  (0) 2012.06.12
Tabbar 아이콘  (0) 2012.06.11
Posted by 다오나무
영삼이의 IT정보2012. 6. 12. 14:13

나는 내가 할줄 아는 대부분의 것들도 인터넷으로 찾아서 하는 편인데 그 이유는

  • 내가 아는 것에서 한정짓지 않고 다른 사람이 어떻게 하고 있는지 확인하며
    • 내가 모르는 무엇을 추가로 좀더 파악하고
    • 최신 트렌드를 연마하기 위해서이다.
  • 또한 지식을 축적하여 KnowHow를 늘려가는 것보다는 KnowWhere 가 좀더 중요도가 높다고 판단하기 때문이다. (물론 KnowWhere 는 제대로된 bookmark가 필수 요소이다.) 

mac os x Leopard 에 dav_svn 을 설치하는 과정은 검색해 보았으나 쉽게 찾을 수는 없었다. 검색 결과(mac leopard dav_svn) 중 하단의 블로그 결과로 봐줄만 한게 있었으나 "고기를 잡는 과정은 있으나. 고기를 잡는 방법에 대한 과정" 이 기술되어 있지 않은듯 하여 직접 기술 하게 되었다.

Running a subversion server on my Mac Mini – 2010년 1월 3일

I recently installed a Mac Mini to be run as a media server.  Create a new file for dav_svn.conf. sudo vi /private/etc/apache2/extra/dav_svn.conf 

dav_svn 은 WebDAV 에 Subversion 을 융합시키기 위한 모듈이다. WebDAV 는 Web-based Distributed Authoring and Versioning 으로서 웹을 통한 웹을 기반으로 하는 공동 저작활동을 할 수 있도록 해 주는 http 서버의 모듈이다. SubVersion 은 CVS의 단점을 개선하여 나온 신 버전 관리 시스템으로 볼 수 있다. dav_svn 을 융합시키면 좋은 이유는 다음의 2가지 정도로 볼 수 있다.

  • 인터넷이 되는 곳이라면 subversion을 이용할 수 있다.
    • WebDAV가 http 서버의 모듈이기 때문에 http protocol을 사용하고 때문에 방화벽에 대부분 안전하다. 즉, 인터넷이 되는 환경이라면 일단 subversion 이 된다고 볼 수 있다.
  • 웹으로 versioning 한 내용을 살펴 볼 수 있다.

따라서 svn server 를 잘 운영하고 있다 하더라도 WebDAV 를 이용해서 한단계 업그레이드 시키는 것은 권할만한 사항이라고 생각한다.

사실 mac 이든 어디든 dav_svn 을 설정하는 것은 그다지 어려운 일이 아니다. 다만 mac은 다른 리눅스 진영과 달리 컴파일보다는 바이너리 설치에 사람들이 익숙하고 아래 순서에 나와 있지만 하필 httpd.conf 에 svn관련 설정만 딱 빠져 있기 때문에 컴파일을 다시 해야 하나? 등의 오해를 불러 일으킬 수 있다. 따라서 해당 모듈이 이미 mac에 있다는 사실만 알면 된다. 참고로 아래 내용은 httpd.conf 그리고 module 이 무엇인지 아는 정도 레벨에서 이해할 수 있도록 기술 되어 있다. 짧게나마 쓴다면 httpd.conf 는 apache 웹서버의 설정값이 기술되어 있고 module 은 apache 웹서버의 플러그인으로 볼 수 있다.

  1. 지금부터 할 대부분의 작업들이 admin 권한을 요구하므로 sudo 로 shell에게 모든 권한을 부여한다.
    • sudo bash
    • 자신 계정의 password 입력.
    • terminal (터미널) 앱으로 해야 하는 것은 당연.
  2. apache2 설정 directory 로 이동하여 mod_dav_svn 이 없음을 확인 
    • bash-3.2# cd /etc/apache2
      bash-3.2# grep -R ‘svn’ *
    • 위의 명령을 날려보면 conf 파일을 포함하여 svn관련 내용이 없다는 것을 알 수 있다.
  3. svn 관련 모듈이 mac의 어딘가에 파일로 존재함을 확인
    • nzMini:apache2 nzin4x$ cd /usr/libexec/apache2/
      nzMini:apache2 nzin4x$ ls -al *svn*
      -rwxr-xr-x  1 root  wheel   64896 Oct  5  2009 mod_authz_svn.so
      -rwxr-xr-x  1 root  wheel  429632 Oct  5  2009 mod_dav_svn.so
      nzMini:apache2 nzin4x$
    • /usr/libexec/apache2 안의 파일들이 httpd.conf 에서 LoadModule 로 호출할 수 있는 파일이다.
  4. 모듈을 이용할 수 있도록 apache가 컴파일 되어 있음을 확인
    • bash-3.2# httpd -l
      Compiled in modules:
        core.c
        prefork.c
        http_core.c
        mod_so.c
    • 위의 mod_so.c 때문에 동적으로 모듈을 로딩할 수 있다. 만약 mod_so 가 없다면 동적으로 모듈을 할 수 없으므로 필요한 모듈을 같이 다시 컴파일 해야 한다. 요즘은 대부분 기본으로 동적 모듈을 제공한다.
  5. httpd.conf 에 수동으로 추가 함
    • LoadModule dav_svn_module libexec/apache2/mod_dav_svn.so
      LoadModule authz_svn_module libexec/apache2/mod_authz_svn.so

      LoadModule dav_fs_module libexec/apache2/mod_dav_fs.so
    • 적당한 위치에 추가하며 필자는 mod_dav_fs 위에다가 2줄을 추가 하였다.
  6. httpd.conf 에 관련 설정 모듈을 webdav 에 추가했음을 밝힘
    • # Distributed authoring and versioning (WebDAV), and svn
      Include /private/etc/apache2/extra/httpd-dav.conf
    • ,and svn 이라는 단순한 주석을 추가하였다. 현재까지의 과정은 apache가 svn 관련 module을 설치하는 과정이었고, 이제 이 모듈이 어떻게 동작할지에 대해서는 ./extra/http-dav.conf 에 추가할 것이다.
  7. /etc/apache2/conf/extra/httpd-dav.conf 수정
    • <Location "/svn">
          Dav svn
          SVNPath /Users/nzin4x/svnrepo
          AuthType Digest
          AuthName webhard
          AuthUserFile /etc/apache2/htpswd
          require valid-user
      </Location>
    • 위의 내용을 마지막 라인에 추가한다.
    • http://nz.pe.kr/svn 에 접속했을때 repository 인 /Users/nzin4x/svnrepo 에 접속(매핑)하라는 뜻이며 /etc/apache2/htpswd 에 만들어져있는 패스워드 정의 파일에 webhard realm (영역) 에 digest 방식으로 패스워드를 인증하여 사용하라는 뜻이다. 이 영역에 접근하기 위해서는 valid-user 여야 한다.
    • htdigest 를 이용해서 패스워드를 만드는 과정은 다음을 참고 한다. (http://httpd.apache.org/docs/2.0/programs/htdigest.html)
    • SVNPath 는 repository 가 하나일때 사용하는 것이고 여러개라면 SVNParentPath 등으로 상세하게 설정할 수 있다.
  8.   apachectl restart

좀 길게 적은감이 있다. 사실 중요한 것은 mac os x에는 dav_svn 을 위한 설정은 존재 하지 않지만 수동으로 추가 할 수 있도록 해당 모듈은 준비해 놓고 있다. 결국 위의 과정중 module 을 찾아내고 그것에 대한 설정을 추가하는 과정이 핵심이라고 할 수 있다.

'영삼이의 IT정보' 카테고리의 다른 글

svn merge 방법  (0) 2012.06.12
mac용 svn시작하기 [출처] mac용 svn시작하기|작성자 seungbeomi  (0) 2012.06.12
맥용 SVN 서버 설치  (0) 2012.06.12
Tabbar 아이콘  (0) 2012.06.11
StoreKit  (0) 2012.06.10
Posted by 다오나무
영삼이의 IT정보2012. 6. 12. 10:12

기본적으로 Mac OS X에는 Subversion 프로그램이 있다.

1.터미널에서 SVN 서버와 클라이언트 버젼을 확인해 보자

서버 : svnserve --version
클라이언트 svn --version

 




2. 소스 저장할 위치에 대해 폴더를 생성 하고 Repository 생성한다.

svnadmin create [경로]


실행화면


다음과 같이 폴더와 파일이 생성된다.



 3. SVN 로그인 계정 등록
[Repository 폴더]/conf/passwd 파일을 수정한다.


예) 아이디 : zang / 패스워드 : 1234 

 
4. SVN 환경 설정
[Repository 폴더]/conf/svnserve.conf 파일을 수정한다.


익명 사용자 접근 막기 (anon_access = none)
인증 사용자 쓰기 권한 (auth_access = write)
인증 데이터베이스는 passwd 사용 (password-db = passwd)




5. Mac에서 SVN 서버를 자동으로 실행하기 위한 스크립트 파일 만들어야 한다.
[참고] 직접 서버를 실행하는 명령어

svnserve -d --listen-port=3690 -r [Repository경로]


스크립트 파일을 만들어 명령어를 입력한다.



스크립트 파일 저장후 파일 권한 설정해준다.

chmod 755 [스크립트 파일 경로]



6. Mac에서 부팅시 자동으로 스크립트 실행하도록 설정한다.

[시스템 환경설정]-[사용자 및 그룹]-[로그인 항목]에서 하단의 + 버튼을 눌러서 방금전에 생성한 스크립트 파일을 선택하면 된다.




7. 설치된 SVN 서버에 기존 소스를 import 하기 


디렉토리 생성

svn mkdir svn://localhost/trunk
svn mkdir svn://localhost/branches
svn mkdir svn://localhost/tags 


오류가 다음처럼 나오면 export SVN_EDITOR=vi를 처리해준다. 

svn: Could not use external editor to fetch log message; consider setting the $SVN_EDITOR environment variable or using the --message (-m) or --file (-F) options
svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR is set, and no 'editor-cmd' run-time configuration option was found


export SVN_EDITOR=vi


실행하고 나면 vi창으로 넘어감.. -> esc키 -> :q! -> 엔터 -> c 
왜 이렇게 하는건지는.. 자세히 안봐서 아직 모르겠고 그냥 vi빠져 나가고 continue(C) 눌러주면 폴더 생성


디렉토리 삭제  

svn rm svn://localhost/trunk



프로젝트 Import 

  svn import --no-auto-props --no-ignore -m "test프로젝트 추가" /Volumes/data/workspace/test svn://localhost/trunk/test


--no-auto-props --no-ignore 옵션을 주면 바이너리 파일을 추가 할수 있음.
-m "메시지" SVN 기록 메시지 

 

프로젝트 export

  svn export svn://localhost/trunk/test

'영삼이의 IT정보' 카테고리의 다른 글

mac용 svn시작하기 [출처] mac용 svn시작하기|작성자 seungbeomi  (0) 2012.06.12
mac os x 에 apache module dav_svn 설치하기.  (0) 2012.06.12
Tabbar 아이콘  (0) 2012.06.11
StoreKit  (0) 2012.06.10
iOS 키보드  (0) 2012.06.10
Posted by 다오나무
영삼이의 IT정보2012. 6. 11. 18:14

아이폰(iPhone) 탭바 구현 - (3) (tabBar)에 아이콘과 색깔 넣기

 

개발환경 : Mac OS X 10.6.3, Simulator - 3.1.3

 

글보다는 그림(아이콘이 탭바에 들어가게 되면 보다 명확하게 어떤 기능을 하는

곳을 가리키는지 알려줄수 있어서 좋다하지만 단점이 있다일반 그림이 들어가게

되면 색깔정보(Opaque) 는 무시되고 이미지에 포함된 Alpha(투명색정보로만

표시가 된다그러니까 일반 그림을 넣게되면 형태만 나오게 된다.

테스트를 해보고 싶다면 투명색정보를 집어넣던지 아니면 투명색 정보가 있는

아이콘으로 해보면 될것이다색깔 쪽은 무지한 상태로 일단 넘어가기로 한다.

 

[원본그림]

[표현그림]

들어가는 이미지의 기본크기는 30x30 이다이에 맞지 않는다면 자동으로 확대/축소된다.

 

탭에 이미지를 넣고 싶다면 먼저 Resources 폴더에 쓸만한 아이콘을 집어넣는다.

그리고 MainWindow.xib 를 클릭해 인터페이스 빌더를 띄운다탭을 클릭하지 말고

표나 타이틀을 클릭하게 되면 그 부분만 선택되게 된다그 상태에서 Inspector 창의

Attributes 란을 보게 되면 아래쪽에 Image 라는 란이있다콤보를 클릭해서 보면

Resources 란에 집어넣었던 이미지가 다 나오게 되는데 이중 하나를 선택하면

표시가 되게 된다다른 탭도 마찬가지 과정을 거치면 된다.

3개의 탭에 모두 다른 그림을 집어넣고 실행한 화면이다어째 마음에 안들지만

Alpha 어쩌구 때문에 그렇다는건 알았기 때문에 그걸로 만족해야겠다

'영삼이의 IT정보' 카테고리의 다른 글

mac os x 에 apache module dav_svn 설치하기.  (0) 2012.06.12
맥용 SVN 서버 설치  (0) 2012.06.12
StoreKit  (0) 2012.06.10
iOS 키보드  (0) 2012.06.10
아이폰 OS 개발 자료 총정리  (2) 2012.06.04
Posted by 다오나무
영삼이의 IT정보2012. 6. 10. 19:27

스토어 킷의 클래스

SKProductsRequest : 삼풍 정보를 얻기 위해서 애플 앱스토어에 요청을 보낸다.

SKProductsResponse : 검색된 결과를 저장하는 클래스 SKProduct의 배열을 담고있다.

SKProduct: 상품 하나에 대한 정보를 저장한다. 가격, 설명 등이 주된 내용이다.

SKPayment: SKProduct를 구입하기 위해서 이클래스를 생성한다.

SKPaymentQueue: 결제를 요청하기 위해서 SKPaymentQueue 객체에 SKPayment를 넣어준다.

SKPaymentTransaction: 결제 결과를 담고 있는 클래스이다.


다양한 구매등록방법

웹서버 동기화, 로컬파일 생성, 사용자 기본값에 기록, 키체인 추가


//1. 프레임워크 추가

StoreKit.framework


//2. 헤더파일 추가

#import <StoreKit/StoreKit.h>


//3. 델리게이트 추가

SKProductsRequestDelegate, SKPaymentTransactionObserver


//4. 감시 객체 등록


- (void)viewDidUnload {

     //앱에서 아이템을 구매하려면 먼저 트랜잭션 옵져버를 추가해야한다.

     //옵져버가 있어야 실제 구매를 시작할 때 구매GUI사용 할수있음.

     SKPaymentQueue* queue = [SKPaymentQueue defaultQueue];

     [queue removeTransactionObserver:self];

}


- (void)viewDidLoad {

     SKPaymentQueue* queue = [SKPaymentQueue defaultQueue];

     [queue addTransactionObserver:self];

}


//5. 구매처리


-(IBAction)actionNoAD

{

    if ([SKPaymentQueue canMakePayments])

    {     // 스토어가 사용 가능하다면

        NSLog(@"Start Shop!");

         

        [[SKPaymentQueue defaultQueue] addTransactionObserver:self];     // Observer를 등록한다.

    }

    else

    {

        NSLog(@"Failed Shop!");

    }

   

     //상품 요청을 생성하고 실행한다.

    SKProductsRequest *productRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:@"com.corealism.FamilyMapCh.ddd"]];

    productRequest.delegate = self;

    

    [productRequest start];

   

}




//6. SKProductsRequest 델리게이트 구현 


- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {

     NSLog(@"SKProductRequest got response");

     if ( [response.products count] ==0 )

     {

          UIAlertView* askView = [[UIAlertView alloc]

                                        initWithTitle:NSLocalizedString(@"Buy", @"buy items")

                                        message:NSLocalizedString(@"Can't retrieve product information.", @"buy items")

                                        delegate:self

                                        cancelButtonTitle:NSLocalizedString(@"Okay", @"confirm action")

                                        otherButtonTitles:nil

                                        ];

          [askView show];

          [askView release];

          return;

     }

   

     if( [response.products count] > 0 )

    {

          SKProduct *product = [response.products objectAtIndex:0];

          NSLog(@"Title : %@", product.localizedTitle);

          NSLog(@"Description : %@", product.localizedDescription);

          NSLog(@"Price : %@", product.price);

       

        SKPayment *payment = [SKPayment paymentWithProduct:product];

        [[SKPaymentQueue defaultQueue] addPayment:payment];

     }

    

     if( [response.invalidProductIdentifiers count] > 0 )

    {

          NSString *invalidString = [response.invalidProductIdentifiers objectAtIndex:0];

          NSLog(@"Invalid Identifiers : %@", invalidString);

     }

}



//7.SKPaymentTransactionObserver 델리게이트 구현

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions

{

    for (SKPaymentTransaction *transaction in transactions)

    {

        switch (transaction.transactionState)

        {

            case SKPaymentTransactionStatePurchasing:

                NSLog(@"SKPaymentTransactionStatePurchasing");

                break;


            case SKPaymentTransactionStatePurchased:

                NSLog(@"SKPaymentTransactionStatePurchased");               

                NSLog(@"Trasaction Identifier : %@", transaction.transactionIdentifier);

                NSLog(@"Trasaction Date : %@", transaction.transactionDate);

                [[SKPaymentQueue defaultQueue] finishTransaction: transaction];

                break;

           

            case SKPaymentTransactionStateFailed:                   

                NSLog(@"SKPaymentTransactionStateFailed");               

                [[SKPaymentQueue defaultQueue] finishTransaction: transaction];

                break;

           

            case SKPaymentTransactionStateRestored:

                NSLog(@"SKPaymentTransactionStateRestored");               

                [[SKPaymentQueue defaultQueue] finishTransaction: transaction];

            default:

                break;

        }

    }

}





//8. 과거에 구매한 내역


-(void) onRestror

{

     SKPaymentQueue *queue =[SKPaymentQueue defaultQueue];

     [queue restoreCompletedTransactions];

}



//9. 구매 등록


    //사용자 설정을 변경한다.

    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"Puchased"];

    [[NSUserDefaults standardUserDefaults] synchronize];

   

    //구매버튼 숨김

    self.navigationItem.leftBarButtonItem=nil;

[출처] StoreKit|작성자 일마레

'영삼이의 IT정보' 카테고리의 다른 글

맥용 SVN 서버 설치  (0) 2012.06.12
Tabbar 아이콘  (0) 2012.06.11
iOS 키보드  (0) 2012.06.10
아이폰 OS 개발 자료 총정리  (2) 2012.06.04
UIImageJPEGRepresentation  (0) 2012.06.04
Posted by 다오나무
영삼이의 IT정보2012. 6. 10. 17:08

- (void) viewDidLoad 에서

scrollView.contentSize = self.view.frame.size;

선언 이후 화면 변환(키보드 등장)에 대한 노티피케이션 감시 코드 추가

1) viewWillAppear 에서 UIKeyboardDidShowNotification 과 UIKeyboardDidHideNotification 등록

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil];


-(void)keyboardDidShow:(NSNotification *)notif 
{
//키보드를 여러 객체들이 열 수 있는데, 자신의 키보드에만 반응하기 위해서, 이 정보를 갖고 있어야 한다
  if(keyboradVisible) 
  { return; }
  NSDictionary* info = [notif userInfo];
  NSValue* aValue = [info objectForKey:UIKeyboardBoundsUserInfoKey];
  CGSize keyboardSize = [aValue CGRectValue].size;

  CGRect viewFrame = self.view.frame;
  viewFrame.size.height -= keyboardSize.height;

  scrollView.frame = viewFrame;
  keyboardVisible = YES;
}

-(void)keyboardDidhide:(NSNotification *)notif 
{
  if(!keyboardVisible)
  { return; }

  NSDictionary *info = [notif userInfo];
  NSValue *aValue = [info objectForKey:UIKeyboardBoundsUserInfoKey];
  CGSize keyboardSize = [aValue CGRectValue].size;

  CGRect viewFrame = self.view.frame;
  viewFrame.size.height += keyboardSize.height;

  scrollView.frame = viewFrame;
  
  keyboardVisible = NO;
  
}

2) viewWillDisappear 에서 등록 해지

[[NSNotificationCenter defaultCenter
] removeObserver:self]



'영삼이의 IT정보' 카테고리의 다른 글

Tabbar 아이콘  (0) 2012.06.11
StoreKit  (0) 2012.06.10
아이폰 OS 개발 자료 총정리  (2) 2012.06.04
UIImageJPEGRepresentation  (0) 2012.06.04
XHTML/CSS 무료 템플릿 배포사이트  (0) 2012.06.01
Posted by 다오나무