'나의 이야기..'에 해당되는 글 447

  1. 2010.07.17 Leadership 에 대하여
  2. 2010.07.10 [iPhone] iAd 붙여넣기
  3. 2010.03.11 [iPhone] OpenGL 투명 배경화면 만들기
Interesting/Apple | Posted by hyena0 2010. 7. 17. 20:00

Leadership 에 대하여



TED 에서 Leadership에 대한

강연을 보았다. 그 제목은 "How to start

a movement" 였다. 아래의 동영상에서와 같이

누군가가 잔디밭위에서 요상한 춤을 추고 있다.

그러다 첫 follower 가 생기고 그의 친구를 부른다.

세명 정도가 되니 여럿이서 모이더니, 나중에는 사람들이

마구 뛰어 오며 자신이 끼는 것이 늦지 않으려는 듯이 보인다.

이 후 거의 모든 사람들이 이 요상한 춤에 동참하게 된다.

참 재밌는 동영상이다. 




리더쉽에 대해 다룬 내용인데, 이것을 보고 이런 생각을 해보았다.

최근 몇년간 애플이 선도하고 있는 모습이 이런게 아니었을까 하는 것 말이다.

새로운 S/W 생태계를 만들고 단순히 제조업의 모습이 아닌 변신은 

모바일 업계에 반향을 일으켰고, 모두 앱스토어 형식으로 어플리케이션을 만든다고 난리다.

또, 앱스토어에 어플리케이션을 올리는 사람들, 혹은 중소업체들이

너도나도 다 뛰어들고 있는 것이 마치 동영상의 사람들을 떠올리게 한다.

한국의 업체들도 이런 리더쉽을 보여줬으면 하는 기대다.


Interesting/iPhone | Posted by hyena0 2010. 7. 10. 20:40

[iPhone] iAd 붙여넣기


  iOS4가 나오면서 iAd 라는 광고시스템이 적용되게 되었습니다.

  아이폰 앱에 광고가 얼마나 수익을 얻을 수 있을지

  시험해 보기 위해 iAd를 붙여보기로 했습니다.

  최근에 iOS4 로 새로 빌드된 앱들이 많은지

  리뷰할때까지 거의 2주가 소요되더군요.

  결과는 보기좋게 "Reject" 되었답니다.

  그 이유는 아래와 같이 광고배너가 일시적으로 컨텐츠 없이 박스만 보이는 현상이 있는데
  이건 애플의 정책에 맞지 않는 다는 것입니다.





그러면 어떻게 해야 하면 아래와 같은 코드를 추가해야 합니다.

- (void)bannerViewDidLoadAd:(ADBannerView *)banner

{

    if (!self.bannerIsVisible)

    {

NSLog(@"bannerViewDidLoadAd -----");

        [UIView beginAnimations:@"animateAdBannerOn" context:NULL];

// assumes the banner view is offset 50 pixels so that it is not visible.

        banner.frame = CGRectOffset(banner.frame, 0, 50);//50

        [UIView commitAnimations];

        self.bannerIsVisible = YES;


    }

}


- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error

{//NSLog(@"didFailToReceiveAdWithError");

if (self.bannerIsVisible)

    {

NSLog(@"didFailToReceiveAdWithError");

        [UIView beginAnimations:@"animateAdBannerOff" context:NULL];

// assumes the banner view is at the top of the screen.

        banner.frame = CGRectOffset(banner.frame, 0, -50);//-50);

        [UIView commitAnimations];

        self.bannerIsVisible = NO;

    }

}


이렇게 하면 베너내부에 컨텐츠가 네트워크나 기타 여러사항으로 인해 지연될 경우, 
표시가 아예되지 않도록 합니다. 다시 연결되면 애니메이션 효과로 표시가 되도록 하는 것이지요.
  
일단 다시 등록했는데, 리뷰까지 얼마나 걸릴지 모르겠군요.
광고가 붙는게 승인나면 다음 업데이트까지 무료로 변경할 계획입니다.


 

  iPhone 에서 OpenGL 로 AR 기능을

  사용하려고 하면 필수적으로 OpenGL 의 

  모델 도형을 투명한 배경위에 보여줘야 합니다.

  그래서 설정해야 할 것들이 몇가지 있습니다.

  우선 기본 설정에서 RGBA8 로 해주고, 

  배경의 색깔을 모두 지운 후 alpha 에 투명값을 

  설정하는 겁니다. "0" 으로 말이죠.

  다시 정리하면 아래 코드를 볼 수 있습니다.

// The GL view is stored in the nib file. When it's unarchived it's sent -initWithCoder:

- (id)initWithCoder:(NSCoder*)coder {

    

    if ((self = [super initWithCoder:coder])) {

CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer;

eaglLayer.opaque = NO;//no - transparent

eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:

[NSNumber numberWithBool:NO], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil];

context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1];

if (!context || ![EAGLContext setCurrentContext:context]) {

[self release];

return nil;

}

animating = FALSE;

displayLinkSupported = FALSE;

animationFrameInterval = 1;

displayLink = nil;

animationTimer = nil;

// A system version of 3.1 or greater is required to use CADisplayLink. The NSTimer

// class is used as fallback when it isn't available.

NSString *reqSysVer = @"3.1";

NSString *currSysVer = [[UIDevice currentDevice] systemVersion];

if ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending)

displayLinkSupported = TRUE;

[self setupView];

}

return self;

}


해당 코드는 일반적으로 제공되는 OpenGL 코드인데, eaglLayer.opaque = NO 로 설정해야 투명한 배경을


얻을 수 있습니다. 또한 도형을 그리는 부분에서는 배경화면의 색깔을 투명으로 지정해야 합니다.


        glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);

glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);


여기서 glClear(Red, Green, Blue, alpha) 값을 보시면 모두 0 으로 설정하면 됩니다.


그런데 이렇게 하고서 투명처리가 안되어 무지 고생을 했습니다.


알고 봤더니 인터페이스 빌더에서 해당 OpenGL 을 그리는 View 의 배경색이 흰색으로 설정되어 있었습니다.





그래서 위와 같이 View 를 선택한 뒤, 배경색 팔레트에서 Opacity 값을 0 으로 설정하면 


View 자체가 투명한 색을 가지게 됩니다.


그러면 아래와 같은 투명배경의 도형을 카메라와 같이 볼 수 있게 됩니다.