출처 : http://blueamor.tistory.com/884

한글체에 Bold를 적용할려고 보니 iOS 기본 글꼴체로는 되지 않았다.
한글 폰트를 추가로 등록하여 커스텀 폰트를 사용하면 적용이 된다.

 1. 먼저 폰트를 추가하여야 한다. 본인은 인터넷에 있는 무료폰트인 헤움폰트를 이용해서 테스트해 보았습니다.
    해당 파일을 XCode에 추가 시킨 후   plist 파일로 가서 아래처럼 추가시킨다.



2. 해당 글꼴의 이름을 알아야 합니다.
   저는 해당 시스템의 글꼴을 검색해서 알아왔습니다.
   for (NSString *familyName in [UIFont familyNames]) {

        NSLog(@"%@ : [ %@ ]", familyName, [[UIFont fontNamesForFamilyName:familyName] description]);
   } 

   
3. self.labAddr.font = [UIFont fontWithName:@"HeummGothic172" size:16.0];
   이런 형태로 사용하시면 됩니다. 
저작자 표시
신고

'IT분야 > iOS' 카테고리의 다른 글

AFNetworking  (0) 2012.06.29
[iOS]한글 추가 폰트 사용하기  (0) 2012.02.22
[iOS]CATransction을 이용한 애니메이션 구현  (0) 2012.02.22
[iOS] Audio Streaming  (2) 2012.02.17
[iOS] TBXML 파서로 XML 파싱하기  (0) 2012.02.08
[iOS] Background Pattern Image 적용  (0) 2012.02.08

출처 : http://www.prapps.net/514

* <QuartzCore/QuartzCore.h> import

        //트랜잭션 시작

   [CATransaction begin]; 

   [CATransaction setValue:[NSNumber numberWithBool:YES]  forKey:kCATransactionDisableActions];

   [CATransaction setValue:[NSNumber numberWithFloat:0.5f]  forKey:kCATransactionAnimationDuration];  //실행되는 시간

        

   // Animation 설정

   CATransition *push = [CATransition animation];

   [push setType:kCATransitionMoveIn];      //Animation 타입  

   push.subtype = kCATransitionFromLeft;    //Animation이 시작될 위치 

   //push.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

        
    //애니메이션이 일어날 뷰의 레이어에 애니메이션을 추가 시킨다. 

   [self.imgMain.layer addAnimation:push forKey:kCATransition];  

    
   //이미지뷰에 이미지 변경 

   UIImage *tempImg = [[UIImage alloc] initWithData:data];

   self.imgMain.image = tempImg;

   [tempImg release];

       
   //애니메이션 시작 

   [CATransaction commit];
 

** 애니메이션 타입과 시작될 위치 및 애니메이션이 일어날 뷰의 레이어만 잘 적용한다면 원하는 애니메이션을 구현하실 수 있습니다.

* 애니메이션 타입
  - kCATransitionFade
  - kCATransitionMoveIn
  - kCATransitionPush
  - kCATransitionReveal 

* 서브 타입
  - kCATransitionFromRight
  - kCATransitionFromLeft
  - kCATransitionFromTop
  - kCATransitionFromBottom 
저작자 표시
신고

'IT분야 > iOS' 카테고리의 다른 글

AFNetworking  (0) 2012.06.29
[iOS]한글 추가 폰트 사용하기  (0) 2012.02.22
[iOS]CATransction을 이용한 애니메이션 구현  (0) 2012.02.22
[iOS] Audio Streaming  (2) 2012.02.17
[iOS] TBXML 파서로 XML 파싱하기  (0) 2012.02.08
[iOS] Background Pattern Image 적용  (0) 2012.02.08
iOS에서 AvAudioPlayer는 기본적으로 MP3 Streaming을 지원하지 않고 Local File만을 지원합니다.
그래서 원격지에 있는 음악파일을 재생시에는 다운 받아서 재생을 해야겠지요..

스트리밍이 지원되는 라이브러리가 없을까 찾아보다가 아래와 같은 사이트 검색...
 https://github.com/mattgallagher/AudioStreamer 

라이브러리와 사용하는 샘플 예제가 같이 들어 있습니다. 어렵지 않게 사용하 실 수 있을 겁니다.
예제 속에는 슬라이더를 이용한 프로그레스 진행상황을 알 수있는 부분과 특정 위치 이동하는 기능등
필요한 부분은 다 구현되어 있습니다.

다만 한가지 스트리밍이 종료될 시점에 현재 재생시간을 알아오는 부분이 문제가 좀 있더군요..
음악은 처음 부터 끝까지 잘 재생되지만 마지막 부분에서 슬라이더가 이동되지 않아 사용자가 보기에
노래가 재생이 덜 된것 처럼 보입니다. 실제로는 다 재생된 겁니다.

해결 방법은 AudioStreamer.m 파일에서 소스를 약간 추가해 주었습니다. 
           if(sampleRate > 0 && ![self isFinishing]){
              ....
  ....
}else if([self isFinishing]){
            AudioTimeStamp queueTime;
Boolean discontinuity;
err = AudioQueueGetCurrentTime(audioQueue, NULL, &queueTime, &discontinuity);
            
const OSStatus AudioQueueStopped = 0x73746F70; // 0x73746F70 is 'stop'
if (err == AudioQueueStopped)
{
return lastProgress;
}
double progress = seekTime + queueTime.mSampleTime / sampleRate;
            lastProgress = progress;
            return progress;
 
별건 없습니다. 종료될 타임에는 현재 오디오 재생시간을 못가져오도록 막혀 있어서 추가해 줬습니다.
원본 소스에서 else if 구문을 추가해 주시면 됩니다. 
더 좋은 방법이 있는지는 모르겠지만...

그럼 즐프.. 
저작자 표시
신고

  개발을 할 때에 http로 자료를 송수신할 때 JSON이나 XML을 많이 씁니다.
저는 JSON을 더 선호하긴 하지만 XML도 할 때가 많습니다.

iOS에 기본적으로 탑재되어 있는 NSXMLParser는 쓰기가 넘 힘들더군요..헷갈리기도 하고.
검색해보니 TBXML이란 놈이 있더군요.. 속도도 빠르고 메모리도 적게 먹습니다..
사용방법도 NSXMLParser보다 몇배는 더 간결..

1. 아래 사이트에서 라이브러리를 다운 받습니다.  -- TBXML.zip
http://www.tbxml.co.uk/TBXML/Changes.html

2. 추가할 라이브러리
NSDataAdditions.h
NSDataAdditions.m
TBXML.h
TBXML.m

- frameworks에 libz.dylib 추가

3. 사용방법은
http://www.tbxml.co.uk/TBXML/API.html
API에 정말 한눈에 보이도록 잘 되어 있습니다.
API로는 부족하시다면 1번 사이트에서 TBXML-Books.zip 에 샘플 예제가 있습니다.
 
자바버전도 있으니 참고 하시길..  
저작자 표시
신고

아이폰을 개발하다 보면 회전을 한다든지 세로 또는 가로 고정으로 해야 할 때가 있습니다.
아래 코드는 UIViewController 에서 모든 방향으로 회전이 가능한 코드입니다.

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return YES;
}

  UIInterfaceOrientationPortrait
  UIInterfaceOrientationPortraitUpsideDown
  UIInterfaceOrientationLandscapeLeft
  UIInterfaceOrientationLandscapeRight

return 값을 넘겨 줄때 해당 상황에 맞게 넘겨 주면 되겠지요

1. 세로 고정
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
  return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation  ==UIInterfaceOrientationPortraitUpsideDown);
}

2. 가로 고정
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
  return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft|| interfaceOrientation  ==UIInterfaceOrientationLandscapeRight);
}

저작자 표시
신고
출처 : http://wkqqn.tistory.com/archive/20110711

기존에 user-agent 변경하는 방법을 Swizzle을 이용해서 변경했었는데
iOS 5로 업데이트 되면서 변경이 안되었다. 물론 앱스토어에 올라가 있는 앱들이 제대로 되지도 않고..

그래서 찾아보다가 한참을 헤매었는데 위 블로그에서 아래와 같은 방법을 찾았다.

AppDelegate.m 파일에 아래 코드를 넣으면 됩니다.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
   NSString *deviceModel = [[UIDevice currentDevice].model stringByReplacingOccurrencesOfString:@"" withString:@""];
    NSString *userAgent = [NSString stringWithFormat:@"Mozilla/5.0 (%@; CPU OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A334,webView_iphone",deviceModel];
    NSDictionary *dictionnary = [[NSDictionary alloc] initWithObjectsAndKeys:userAgent,@"UserAgent", nil];
    [[NSUserDefaults standardUserDefaults] registerDefaults:dictionnary];
    [dictionnary release];

    .....  
    .....
}

본인은 스마트폰에서 모바일웹으로 접속한 것인지 앱에서 웹뷰로 접속한 것인지 구분하기 위해
UserAgent 맨 뒤에 ,webView_iphone  문자열을 삽입하였습니다.

확인은 웹뷰를 구현한 곳에서 아래처럼 출력하시면 확인 할 수 있습니다
-(BOOL) webView:(UIWebView*) webView shouldStartLoadWithRequest:(NSURLRequest*) req navigationType:(UIWebViewNavigationType) navigationType{
    NSMutableURLRequest *request = (NSMutableURLRequest *)req;
   
    NSLog(@"%@",[request allHTTPHeaderFields]);
    ....
    ....
}
저작자 표시
신고

아이폰 앱을 앱데이트 할 때에

This bundle is invalid. The key CFBundleShortVersionString in the Info.plist file must contain a higer version than that of the previously uploaded version.

이런 메세지가 뜬다면 버전이 안맞다는 얘기인데..
분명히 버전을 바꾸었는데도 Archive 하면 버전이 안바뀐 채로 컴파일이 되었다.

찾아보니 plist 파일에 "Bundle Version" 외에 "Bundle Version string, short"이 있는데
후자는 앱의 상세버전이라고 한다. 요놈이 변경이 안되어 있었다.

옛날에 업로드한 앱들은 "Bundle Version string, short" 이런 항목이 없어서 Bundle Version만 바꾸면 잘되었는데 왜 생겼는지는 모르겠다.

아무튼 "Bundle Version"  항목과  "Bundle Version string, short" 항목을 동일하게 한 후에
Archive하고 업로드하였더니 성공..
저작자 표시
신고
<네비게이션 바 아래에 동적으로 늘어나는 옵션 메뉴 넣기> from xguru in twitter

<OAuth>
<페이스북, 트워터, 구글 리더 등에서 글, 그림, URL, 파일등을 공유하는 라이브러리>
<네이트 Open API 라이브러리>
<페이스북 연동 라이브러리>
<TCP, UDP Socket Class 라이브러리>
<기본 클래스를 확장한 라이브러리>
<iPhotoDiary, 육아일기 어플리케이션>
<DropBox를 통한 파일 공유 API 사용 예제 소스>
<JSON Library> ----------------------------------------------------------------------------
JSONKit :
SBJSON
TouchJSON
<XML Parser> ------------------------------------------------------------------------------

GDataXML :

http://code.google.com/p/gdata-objectivec-client/source/browse/trunk/Source/XMLSupport/ (소스)

http://www.raywenderlich.com/725/how-to-read-and-write-xml-documents-with-gdataxml (해설)

TBXML : (read only, XPath 미지원)

http://www.tbxml.co.uk/TBXML/TBXML_Free.html

TouchXML : (read only, XPath 지원)

https://github.com/TouchCode/TouchXML

KissXML : (read/write)
여러가지 XML Parser에 대한 성능 비교 및 사용 용도 설명
<zip/unzip lib> ------------------------------------------------------------------------------
<AVPlayer: LGPL로 FFmpeg, SoundTouch를 사용했다고 나오네요>
<무인코딩 동영상 플레이어 VLC iPhone, iPad>
<web server>
<bar code, QR code>
<push notification service 관련 provider>

<web 게시판과 연동>

http://cocoadev.tistory.com/#recentTrackback에서 공개한 내용임.
* 이미지 편집 함수 모음( 스케일, 회전, crop 등)
  • 다양한 UI 구현
  • 테이블뷰셀 커스터마이징
  • HTTP GET/POST 요청
  • XML 파싱
  • 사진 앨범, 카메라, 지도 이미지 접근
  • 맵뷰 및 위치정보
  • 푸시 노티피케이션

<여러 UI 모음: photo viewer, etc>
http://github.com/facebook/three20 (초기에는 facebook 어플이었으나 현재는 여러 UI 모음으로 바뀜 )

<map>

<E-mail>
<달력>
http://ved-dimensions.blogspot.com/2009/04/iphone-development-creating-native_09.html

<sqlite>

<계산기>

<트위터 클라이언트>
http://github.com/blog/329-natsuliphone-iphone-twitter-client
http://code.google.com/p/tweetero/

<facebook>

<rss reader>
http://code.google.com/p/iphone-simple-rss-aggregator/

<ebook reader>
http://code.google.com/p/iphoneebooks/

<blog>
http://iphone.wordpress.org/

<백업, 동기화>
http://www.funambol.com/solutions/iphone.php
http://code.google.com/p/gris/ (구글 리더 동기화)

<time tracking>
http://github.com/freshbooks-addons/freshbooks-iphone-project

<게임>
http://code.google.com/p/cocos2d-iphone/
http://code.google.com/p/tris/ (테트리스)
http://code.google.com/p/mintgostop/ (고스톱)

<google toolbox>

http://code.google.com/p/google-toolbox-for-mac/


<택배>

<이미지 프로세싱>

http://code.google.com/p/simple-iphone-image-processing/


<증강현실>
http://www.iphonear.org/

<coverflow 대체 구현>
http://apparentlogic.com/openflow/
http://www.chaosinmotion.com/flowcover.m (매가박스 어플에서 참고함)

<정규표현식 라이브러리>
http://blog.mro.name/2009/09/cocoa-wrapped-regexh/
http://regexkit.sourceforge.net/RegexKitLite/

<라이브러리 : JSON, DOM XML, Google Data APIs, Twitter, Flick, Game Engines, Unit Testr>
http://www.codingventures.com/2008/12/useful-open-source-libraries-for-iphone-development/

<기타>
http://open.iphonedev.com/
http://joehewitt.com/post/the-three20-project/
저작자 표시
신고

간단하게 기본 actionsheet를 사용하지 않고 view를 추가해서 사용하는 방법입니다.

헤더파일에
UIActionSheet *actionSheet;
UIView *viewActionSheet;
두개를 추가하고.. view는 아울렛으로 연결하시던지 하시면 됩니다.

특정 버튼을 눌러서 actionSheet를 띄울 코드

    UIActionSheet *tempActionSheet = [[[UIActionSheet alloc] init] autorelease];
    tempActionSheet.delegate = self;
    [tempActionSheet addSubview:self.viewActionSheet];  // 액션시트에 뷰 추가
    [tempActionSheet showInView:self.view];                   // 액션시트를 보여줄 뷰
    [tempActionSheet setBounds:CGRectMake(0, 0, self.view.frame.size.width, 200)];
    self.actionSheet = tempActionSheet;

viewActionSheet 의 각종 버튼도 이벤트 등록하시고
종료버튼을 만드셨다면 그 함수에서 아래 코드를 부르시면 액션시트가 닫힙니다.
     [self.actionSheet dismissWithClickedButtonIndex:0 animated:YES];
     self.actionSheet = nil;

액션시트를 추가할때 높이를 view 사이즈의 두배를 주어야 한다고 하는데 이유는 잘...

즐코딩하세요

참조 사이트 : http://mellang.tistory.com/26
저작자 표시
신고
기존 프로젝트를  xCode4로 넘어오면서 컴파일할때 Missing File 경고가 출력될 때가 있다.
실행하는데는 전혀 문제는 없는데 왜 뜨는지 인터넷에 검색해보니 .svn문제라고 한다.

link : http://www.thezeto.com/wordpress/?p=3

위 링크에 설명이 잘 되어 있다.

1. 터미널에서 아래의 두개의 명령어만 치면 finder에서 숨겨진 파일 및 폴더를 볼 수 있다.
defaults write com.apple.finder AppleShowAllFiles TRUE
killall Finder

2. 본인은 파일이 그닥 많지 않아서 Finder 에서 프로젝트 폴더에 있는 .svn 하나만 지우니 경고 출력이 모두 없어졌다.

지우고 난뒤에는

defaults write com.apple.finder AppleShowAllFiles FALSE
killall Finder

다시 파일을 숨겼다.
저작자 표시
신고