아이폰어플개발정보2012. 1. 26. 11:03
http://www.cocos2d-iphone.org/forum/topic/8424
애드몹을 사용 하시기 위해서는 위의 사이트에서 등록 하여 고유 넘버 키를 받으셔야 사용이가능 합니다.
참고 사이트 입니다.


=============================================================================
AdViewController.h
#import <UIKit/UIKit.h>
#import <iAd/iAd.h>
#import "AdMobDelegateProtocol.h"

@protocol AdViewControllerDelegate;

@interface AdViewController : UIViewController <ADBannerViewDelegate, AdMobDelegate>
{
 id <AdViewControllerDelegate> delegate;
 id adBannerView;

 AdMobView* adMobAd;
}

@property (nonatomic, assign) id <AdViewControllerDelegate> delegate;

- (id)initWithMasterView:(UIView*)masterView;
- (void)rotateBannerView:(UIDeviceOrientation)toDeviceOrientation;

@end

@protocol AdViewControllerDelegate

- (void)adController:(AdViewController*)controller didLoadiAd:(id)iadBanner;
- (void)adController:(AdViewController*)controller didFailedToRecieveiAd:(id)iadBanner;

- (void)adController:(AdViewController*)controller didLoadAdMobAd:(AdMobView*)adMobBanner;
- (void)adController:(AdViewController*)controller didFailedToRecieveAdMobAd:(AdMobView*)adMobBanner;

@end

AdViewController.m

#import "AdViewController.h"
#import "cocos2d.h"

#import "AdMobView.h"

@implementation AdViewController

@synthesize delegate;

- (UIDeviceOrientation)currentOrientation
{
 return [[CCDirector sharedDirector] deviceOrientation];
}

- (id) initWithMasterView:(UIView*) masterView
{
 if( nil != (self = [super init]) )
 {
  [self setView:masterView];

  //Initialize the class manually to make it compatible with iOS < 4.0
  Class classAdBannerView = NSClassFromString(@"ADBannerView");
  if (classAdBannerView != nil)
  {
   adBannerView = [[classAdBannerView alloc] initWithFrame:CGRectZero];
   [adBannerView setDelegate:self];
   [adBannerView setRequiredContentSizeIdentifiers: [NSSet setWithObjects:
                 ADBannerContentSizeIdentifier320x50,
                 ADBannerContentSizeIdentifier480x32, nil]];

   [self.view addSubview:adBannerView];

   [self rotateBannerView:[self currentOrientation]];

   [adBannerView setHidden:YES];

  }
  else
  {
   //Request an AdMob Ad
   adMobAd = [AdMobView requestAdOfSize:ADMOB_SIZE_320x48 withDelegate:self];
   [adMobAd retain];
  }
 }

 return self;
}

- (void)rotateBannerView:(UIDeviceOrientation)toDeviceOrientation
{
 if (adBannerView)
 {
  if (UIDeviceOrientationIsLandscape(toDeviceOrientation))
   [adBannerView setCurrentContentSizeIdentifier:ADBannerContentSizeIdentifier480x32];
  else
   [adBannerView setCurrentContentSizeIdentifier:ADBannerContentSizeIdentifier320x50];

  [(UIView*)adBannerView setTransform:CGAffineTransformIdentity];

  //Set the transformation for each orientation
  switch (toDeviceOrientation)
  {
   case UIDeviceOrientationPortrait:
   {
    [(UIView*)adBannerView setCenter:CGPointMake(160, 455)];
   }
    break;
   case UIDeviceOrientationPortraitUpsideDown:
   {
    [(UIView*)adBannerView setTransform:CGAffineTransformMakeRotation(CC_DEGREES_TO_RADIANS(180))];
    [adBannerView setCenter:CGPointMake(160, 25)];
   }
    break;
   case UIDeviceOrientationLandscapeLeft:
   {
    [(UIView*)adBannerView setTransform:CGAffineTransformMakeRotation(CC_DEGREES_TO_RADIANS(90))];
    [adBannerView setCenter:CGPointMake(16, 240)];
   }
    break;
   case UIDeviceOrientationLandscapeRight:
   {
    [(UIView*)adBannerView setTransform:CGAffineTransformMakeRotation(CC_DEGREES_TO_RADIANS(-90))];
    [adBannerView setCenter:CGPointMake(304, 240)];
   }
    break;
   default:
    break;
  }
 }

 if (adMobAd)
 {
  [adMobAd setTransform:CGAffineTransformIdentity];

  //Set the transformation for each orientation
  switch (toDeviceOrientation)
  {
   case UIDeviceOrientationPortrait:
   {
    [adMobAd setCenter:CGPointMake(160, 456)];
   }
    break;
   case UIDeviceOrientationPortraitUpsideDown:
   {
    [adMobAd setTransform:CGAffineTransformMakeRotation(CC_DEGREES_TO_RADIANS(180))];
    [adMobAd setCenter:CGPointMake(160, 24)];
   }
    break;
   case UIDeviceOrientationLandscapeLeft:
   {
    [adMobAd setTransform:CGAffineTransformMakeRotation(CC_DEGREES_TO_RADIANS(90))];
    [adMobAd setCenter:CGPointMake(24, 240)];
   }
    break;
   case UIDeviceOrientationLandscapeRight:
   {
    [adMobAd setTransform:CGAffineTransformMakeRotation(CC_DEGREES_TO_RADIANS(-90))];
    [adMobAd setCenter:CGPointMake(296, 240)];
   }
    break;
   default:
    break;
  }
 }
}

#pragma mark -
#pragma mark ADBannerViewDelegate

- (BOOL)allowActionToRun
{
 return YES;
}

- (void) stopActionsForAd
{
 //Pause background music here

 [adBannerView setHidden:YES];

 [[CCDirector sharedDirector] stopAnimation];
 [[CCDirector sharedDirector] pause];
}

- (void) startActionsForAd
{
 //Resume background music here

 [self rotateBannerView:[self currentOrientation]];
 [[UIApplication sharedApplication] setStatusBarOrientation:(UIInterfaceOrientation)[self currentOrientation]];
 [adBannerView setHidden:NO];

 [[CCDirector sharedDirector] stopAnimation];
 [[CCDirector sharedDirector] resume];
 [[CCDirector sharedDirector] startAnimation];
}

- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave
{
 BOOL shouldExecuteAction = [self allowActionToRun];
    if (!willLeave && shouldExecuteAction)
    {
  [self stopActionsForAd];
    }
    return shouldExecuteAction;
}

- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
 [adBannerView setHidden:NO];
 [delegate adController:self didLoadiAd:banner];
}

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
 [adBannerView setHidden:YES];
 [delegate adController:self didFailedToRecieveiAd:banner];
}

- (void)bannerViewActionDidFinish:(ADBannerView *)banner
{
 [self startActionsForAd];
}

#pragma mark -
#pragma mark AdMobDelegate methods

- (NSString *)publisherIdForAd:(AdMobView *)adView
{
 return @"your_admob_publisher_id";    //replace it with you publisher id
}

- (UIViewController *)currentViewControllerForAd:(AdMobView *)adView {
 return self;
}

- (UIColor *)adBackgroundColorForAd:(AdMobView *)adView
{
 return [UIColor colorWithRed:0 green:0 blue:0 alpha:1]; // this should be prefilled; if not, provide a UIColor
}

- (UIColor *)primaryTextColorForAd:(AdMobView *)adView
{
 return [UIColor colorWithRed:1 green:1 blue:1 alpha:1]; // this should be prefilled; if not, provide a UIColor
}

- (UIColor *)secondaryTextColorForAd:(AdMobView *)adView
{
 return [UIColor colorWithRed:1 green:1 blue:1 alpha:1]; // this should be prefilled; if not, provide a UIColor
}

- (NSArray *)testDevices
{
 return [NSArray arrayWithObjects: ADMOB_SIMULATOR_ID, nil];
}

- (void)didReceiveAd:(AdMobView *)adView
{
 CCLOG(@"AdMob: Did receive ad");

 [self rotateBannerView:[self currentOrientation]];
 [self.view addSubview:adMobAd];

 [delegate adController:self didLoadAdMobAd:adView];
}

// Sent when an ad request failed to load an ad
- (void)didFailToReceiveAd:(AdMobView *)adView
{
 CCLOG(@"AdMob: Did fail to receive ad");
 [adMobAd removeFromSuperview];
 [adMobAd release];
 adMobAd = nil;

 [delegate adController:self didFailedToRecieveAdMobAd:adView];
}

#pragma mark -
#pragma mark Memory Management

- (void) dealloc
{
 if (adMobAd)
 {
  [adMobAd setDelegate:nil];
  [adMobAd removeFromSuperview];
  [adMobAd release];
  adMobAd = nil;
 }

 if (adBannerView)
 {
  [adBannerView setDelegate:nil];
  [adBannerView removeFromSuperview];
  [adBannerView release];
  adBannerView = nil;
 }

    [super dealloc];
}

@end

The usage is very simple, #importAdViewController.h in you Layer's .h and add the delegate protocol AdViewControllerDelegate

#import "AdViewController.h"

@interface Menu : CCLayer <AdViewControllerDelegate>
{
 AdViewController *adController;
}

And in your layer's .m add this

- (void)onEnter
{
 [super onEnter];

 adController = [[AdViewController alloc] initWithMasterView:[[CCDirector sharedDirector] openGLView]];
 [adController setDelegate:self];

}

- (void)onExit
{
 //Completely remove the controller
 [adController setDelegate:nil];
 [adController release];
 adController = nil;

 [super onExit];
}

- (void)adController:(AdViewController*)controller didLoadiAd:(id)iadBanner;
{
 //Do something when the ad loads, like moving objects.
}

- (void)adController:(AdViewController*)controller didFailedToRecieveiAd:(id)iadBanner;
{
 //Do something when the ad fails to load, like moving objects.;
}

- (void)adController:(AdViewController*)controller didLoadAdMobAd:(AdMobView*)adMobBanner;
{
 //Do something when the ad loads, like moving objects.
}

- (void)adController:(AdViewController*)controller didFailedToRecieveAdMobAd:(AdMobView*)adMobBanner;
{
 //Do something when the ad fails to load, like moving objects.
}
<script src="http://gods2000.tistory.com/plugin/CallBack_bootstrapper?&src=https://s1.daumcdn.net/cfs.tistory/v/0/blog/plugins/CallBack/callback&id=29&callbackId=gods2000tistorycom292340&destDocId=callbacknestgods2000tistorycom292340&host=http://gods2000.tistory.com&float=left&random=631"></script> 출처 :http://gods2000.tistory.com/29
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2012. 1. 26. 11:03
iOS에서 가장많이 사용하는 UI는 바로 테이블 뷰이다. 테이블 뷰는 리스트형태의 데이터를 보여주기위해 사용하기도 하지만, 설정화면을 TableView로 구성하기도 한다.
[TableView로 설정화면을 구성한 예]
이렇게 설정을 TableView로 만들었을때 해당 Cell들은 고정적이며 동적으로 처리해야 할일이 없다. 그런데도 이전버전의 방식으로 구현을 하려면 Custom Cell을 xib로 만들고 이것들을 배열로 만드는 불편한 작업을 할 뿐만 아니라, 테이블을 구현하기 위한 각종 delegate method까지 구현을 해줘야 한다.이렇게 불편한 점을 개선하고자 xCode4.2(iOS5)에서는 "static cell"이라는 일종의 TableView 타입을 제공해 줌으로서, Cell의 갯수가 변하지 않는 상황에서 쉽게 셀을 구성하도록 해주는 기능입니다. 해당기능은 xCode 4.2에서 제공하는 story board에서 사용할 수 있습니다.작성 방법1. 프로젝트 생성을 다음과 같이 진행합니다.
두번째 화면에서 Use Storyboard 에 체크를 한후 프로젝트를 생성합니다.
그럼 다음과 같은 구조의 프로젝트가 생성이 됩니다.
2. 첫번째로 ViewController.h가 상속받고 있는 Class를 UIViewController 에서 UITableViewController로 변경합니다.
3. MainStoryboard.storyboard파일을 선택합니다. 그후 오른쪽 아래쪽의 library창에서 TableViewController를 끌어다가 빈 화면으로 올려놓습니다.(기존에 있던 view위에 올리는 것이 아닙니다.)
빈공간으로 끌어올려 아래 그림처럼 두개를 나란히 배치시킵니다.
4. 맨 좌측의 화살표를 드래그 하여 TableView Controller에 붙입니다.
이렇게 화살표를 붙이면 TableViewController가 시작점이 되면서 앱을 실행 시키면 가장 먼저 이 Controller가 보여지게 됩니다.
5. 이제 이전의 View Controller(좌측에 있던)는 사용할 일이 없음으로 삭제 합니다.6. 이제 좌측 상단의 object 영역에서 TableView를 선택하고 속성창에서 content를 "static cells"로 변경합니다.
7. Storyboard에 있는 TableViewController의 File's Owner가 ViewController라고 지정해 줍니다.좌측의 "Table view Controller Scene"에서 Table View Controller를 선택하고 오른쪽 상단의 Identity Inspector창에서 Custom Class를 ViewController로 지정합니다.
이상으로 static cell을 사용하기 위한 기본설정은 모두 끝났습니다. 이제 TableView의 속성의 설정을 통해 static cell을 만들어 보겠습니다.왼쪽상단의 TableView를 선택하면 우측 inspector창에 다양한 TableView들의 속성이 나오게 되는데, 이것들을 통해 다양한 모양의 TableView를 구성할 수 있습니다.저는 섹션의 갯수와 table style만 변경하여 다음과 같은 모양을 만들었습니다.
[설정된 화면 모습]
이후 각셀 위로 library창에서 UI들을 끌어다가 셀에다 놓으면 바로 Custom cell을 만들어 낼 수 있습니다.그리고 각 셀을 선택을 하면 각셀의 세부설정(accessory타입 같은)을 할 수 있으니 필요한 데로 만들면 됩니다.
[실행결과 화면]
물론 IBOutlet 과 IBAction으로 연결하여 각 셀의 view들을 제어할 수 있습니다.
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 6. 26. 09:51
아이폰App개발시 자동잠금(Auto-Lock) 기능 막는(Prevent) 방법.

아이폰용 어플을 보면 AlarmClock 같은 App의 경우 거치대에 올려놓고 탁상시계대용으로 사용하기도 합니다.

아이폰, 아이팟터치엔 자동잠금이라는 기능이 있어서 시간이 지나면 자동으로 꺼집니다.

전 1분으로 설정되 있고요. 대부분 해제 안하고 설정해 놨을 겁니다.

자동으로 꺼지면 탁상시계용도로 사용할 수 없습니다.

그래서 이와 비슷한 App을 개발할 땐자동잠금 기능을 끄는 코드를 삽입해야 합니다.

App이 실행되면 main함수에서 생성하는 UIApplication 쪽을 한번 살펴봅시다.

XCode Help을 띄우시고 UIApplication 검색해 보면..

Getting the Application Instance

sharedApplication

항목이 눈에 띕니다. 다른 Controller나 View 인터페이스 코드에서 UIApplication instance를 얻어오는 메소드입니다.

sharedApplication

Returns the singleton application instance.

+ (UIApplication *)sharedApplication

Return Value

The application instance is created in the UIApplicationMain function.


 

UIApplication *thisApp = [UIApplicationsharedApplication];

이렇게 하시면 main에서 생성한 UIApplication 다른 기능을 사용할 수 있겠네요.

계속 UIApplication 를 살펴보면..

Managing Application Activity

idleTimerDisabled  property

이 부분이 저희가 원하는 기능을 이루게 해줄 것 같군요.

idleTimerDisabled

A Boolean value that controls whether the idle timer is disabled for the application.

이 프로퍼티에 YES를 주면 되겠네요.

그렇다면

UIApplication *thisApp = [UIApplicationsharedApplication];

thisApp.idleTimerDisabled = YES;


이렇게 하면 자동잠금이 해제 되겠습니다. NO를 입력하면 자동잠금이 다시 실행되겠죠.



출처 : http://blog.naver.com/PostView.nhn?blogId=ghostsbs&logNo=100000622
Posted by 오늘마감

댓글을 달아 주세요

아이폰뉴스2010. 6. 25. 15:27
개인적으로 본 아이폰OS 4.0 주요 기능 3가지.

한국시간으로 4월 9일 새벽에 아이폰OS 4.0 발표가 있었습니다.

들으면서 느낀건 원래 있던 기능을 쓰기 편하게 조합해 표면으로 노출시킨 것만으로도 엄청난 반향을 불러오는데 놀랬습니다. OS 4.0 으로 인해 경쟁자(후발주자)보다 한발 더 앞서갈 수 있는 힘을 얻게 됐으니 MS와 구글은 긴장해야 할 듯 싶습니다.

1. MultiTasking (멀티태스킹)

발표전에 사람들이 가장 많이 기대하고 있던 기능 입니다. 그 동안 아이폰, 아이팟터치는 극히 제한된 멀티태스킹 기능으로 인해 불편을 초래했고 다른 경쟁사들이 멀티태스킹 기능을 내세워 애플을 압박하기 시작했기에 많은 분들이 이 기능이 나오리라 예상했고 간절히 원했을 겁니다. (아이패드의 영향도 컸죠)

발표된 멀티태스킹 기능을 보면 애플은 참~영리하다는걸 느낍니다. 이번 멀티태스킹 기능은 이전 버전에서도 충분히 구현할 수 있었지만 여러가지 이유때문에 막아놨던 것 입니다. 이 것을 사용하기 편하게 조합해 표면상으로 노출시킨 것만으로도 박수갈채를 받는건 애플이 개발을 잘하고 있다는 뜻이겠지요.

이번에도 마찬가지로 제한된 멀티태스킹을 제공합니다만 멀티로 메모리 많이 잡아먹는 풀3D게임을 몇개씩 돌릴 수 없을겁니다. 아이폰은 256M 메모리를 지원하며 가상디스크 기능이 없기 때문입니다. 게임 같은 경우엔 현재 콜수신 왔을 때 처럼 게임을 일시정지하고 원상태로 돌아갈 수 있게 상태정보들을 저장한 후 메모리를 해제해야 할 걸로 보입니다. 메모리를 해제하지 않으면 다른 앱들이 쓸 메모리가 없을테니까요.

멀티태스킹을 위해 위와 같은 API들을 준비한걸 보면 4.0의 멀티가 제한된 것임을 알 수 있습니다.

어찌됐던 이젠 개발자들은 메모리 관리에 더 신경을 써야 합니다. 본인 앱 오류로 인해 다른 앱들의(멀티로 돌아가는) 활용을 방해한다면 삭제 1순위가 될 것입니다. 아이폰 앱스토어엔 대체 가능한 수많은 앱들이 존재하기 때문입니다. 개발자 입장에선 부담이 약간 증가한 거라 보여지지만 멀티가 되던 안되던 메모리 관리는 기본적으로 철저히 해야 하는 것이니 이제부터라도 제대로 만들어야 겠습니다.

2. Folders

개인적으로 간절히 원했던 기능입니다. 멀티태스킹보다 이 기능이 더 기대되는데요. 현재 제 기기엔 11페이지를 넘어 추가 설치한 앱들을 기억해 놨다 검색으로 찾아 실행시켜야 합니다. 폴더 기능이 있으면 2~3페이지로 정리될테니 그런 불편은 사라지겠네요.

이 기능덕에 앱들이 삭제되는 기간이 늘어날 것입니다. 예전엔 재미없어진 앱들은 바로바로 지웠지만 폴더 기능으로 인해 삭제하지 않고 오랫동안 보유하게 될 것입니다. 꾸준한 업데이트로 한물간 앱들을 다시 꺼내보게 만드는 요인이 되므로 개발자들은 예전보다 부지런히 업데이트 해야 할 것입니다. 이는 iAd 기능과 더불어 수익증대에 기여할 것으로 예상합니다.

앱 아이콘을 드래그해 다른 앱에 올려놓으면 폴더가 자동으로 생성된답니다. 한 폴더에 12개까지 저장 가능하니 2,160의 앱을 저장할 수 있습니다.

3. iAd

개인적으로 이번 발표에서 가장 큰 영향을 줄 수 있는 요소를 iAd 라 보고 있습니다. 구글이 애드몹을 인수해 애플에게 한방 먹였었는데 이번에 애플이 구글의 애드몹을 거의 무용지물로 만들 수 있는 기능을 넣어 완벽히 복수했다고 봅니다.

광고주 섭외와 시스템 관리를 애플이 해주는 대신 40%의 수익을 가져가고 iAd를 이용해 광고를 한 개발자들에게 60%를 주는 것도 iAd의 영향력을 느낄 수 있는데요. 애플이 모바일 광고 시장을 넘겨주지 않기 위해 강수를 둔 듯 합니다. 개발자 입장에선 대환영이죠.

이젠 예전보다 무료버전 개발이 더 활성화 되겠고(무료버전을 만들어도 iAd로 인해 돈을 벌 수 있으므로) 유료버전도 수익증대효과를 누릴 수 있으며 한물간 유료버전을 무료버전화 시켜 추가수익을 얻을 수 있게 됩니다. 이 것은 개발한 앱의 수명이 예전보다 훨씬 늘어나는 결과가 됩니다. 여러모로 개발자 입장에선 대환영입니다.

아이폰OS 4.0 을 무료 업그레이드 해주는 것도 iAd 활성화를 위한 포석이라 보여집니다. 올해말엔 iAd를 이용한 앱들이 거의 대부분을 차지할 거라 예상합니다.

4. 기타

그 외에도 홈스크린 월페이퍼, 메일계정을 복수 설정할 수 있는 기능, 카메라 디지탈 줌 5배수 지원, 앱 안에서 SMS기능 지원, 캘린더, 포토 라이브러리 접근, 블루투스 키보드등 많은 기능을 지원하지만 그 중에서 게임센터 기능이 눈에 띕니다.

윈도우 모바일7이 X-BOX 라이브와 연동해 이슈를 만들자 바로 게임센터 기능으로 반격했는데요. 소셜 게이밍 네트워크 기능까지 추가해 닌텐도DS와 PSP의 경쟁체계를 갖췄습니다. 앞으로 나올 게임전용 악세사리 (콘트롤 패드) 까지 더하면 닌텐도DS와 PSP는 긴장해야 할 것 같습니다.

5. 마치며..

예전에 삼섬 광고에 '삼성이 만들면 다릅니다.' 가 있었는데 이젠 그 말이 애플에게 딱 맞을 것 같습니다. 유저들에게 편의성을 제공해주고 개발자들에게 수익을 주는 애플. 편협하고 제한적이라는 비난에도 불구하고 수많은 사용자와 개발자들은 당분간 아이폰을 선호할 수 밖에 없을 것 같습니다. 개인적으로 안드로이드와 윈도우모바일가 성공해 독점이 아닌 경쟁체제가 됐으면 합니다만 아직까진 아이폰이 우위에 있는건 사실입니다.

더불어 올 여름에 발표될 아이폰 신제품도 기대해 봅니다.



출처 : http://blog.naver.com/PostView.nhn?blogId=ghostsbs&logNo=103676415
Posted by 오늘마감

댓글을 달아 주세요

아이폰기본사용2010. 6. 22. 03:51
아이폰 화면 확대/축소 기능 강좌

아이폰에서는 화면을 두세배로 커지게 할수 있는 기능이 있습니다.

인터넷을 이용할시 글씨가 작아서 불편하시다고요?

화면을 확대해서 크게보면 편리하게 아이폰인터넷 서핑을 즐기실수 있습니다.

인터넷이용시에 유용 하게 쓰일수 있습니다.

인터넷을 이용하다보면 모바일버전과 pc버전이있는데 pc버전으로 인터넷을 이용할시

글씨가 작아 잘 보이지 않을것입니다.

이럴때에는 한손가락을 아이폰 액정에 대고 한손가락을

대각선으로(↘방향) 벌려주시면 화면이 커지게 됩니다.

화면을 작게 할때에는 반대방향으로 대각선에서 중간으로 드래그 해주시면 됩니다.

 

아이폰 인터넷 화면이 커진 모습입니다.

3손가락으로 두번 톡톡 쳐주면 아이폰 화면이 확대되는데

2손가락을 이용한 확대기능에서는 커지지 않는 어플실행중,바탕화면 등에서도 화면이 커지는걸

볼수 있습니다.



출처 : http://blog.naver.com/PostView.nhn?blogId=kjw01255&logNo=50086840882
Posted by 오늘마감

댓글을 달아 주세요

아이폰기본사용2010. 6. 21. 23:53
빨리감기 및 되감기 기능 사용법
빨리감기, 되감기 기능
아이폰에서 음악을 들을때 하단 플레이어 버튼들을 보면 플레이/정지 버튼과 다음곡, 이전곡 버튼이 있는데 다음곡버튼을 누르고 있으면 다음곡으로 넘어가는것이 아니라 빨리감기 기능이 된다. 이전곡도 마찬가지로 한번 터치하는것이 아니라 꼭 누르고 있으면 뒤로 빨리감기 기능이 된다. (이것도 많은 사람들이 다 아는 기능)


출처 : http://blog.naver.com/PostView.nhn?blogId=dandyher&logNo=150086479988
Posted by 오늘마감

댓글을 달아 주세요