게임이 끝나고 OS X 내장된 트위터를 통해서 점수를 보낼 때, 현재 화면을 캡쳐해서 NSImage로 저장하는 방법이다.
// 42는 윈도우 타이틀바 높이인데 뭔가 가져올 방법이 있을지도.
방법 찾았음. 윈도우의 전체 크기에서 콘텐츠 크기를 빼면 됨. 42가 아니고 22였음.
* 참조
http://codereview.stackexchange.com/questions/32466/reviewing-c-function-which-captures-the-screen
- (void)showServicePicker:(id)sender {
NSRect frame = [[self.view window] frame];
NSRect contentBounds = [[[self.view window] contentView] bounds];
NSRect titlebarRect = NSMakeRect(0, 0, self.view.bounds.size.width, frame.size.height - contentBounds.size.height);
frame.size.height = frame.size.height - titlebarRect.size.height;;
frame.origin.y = frame.origin.y + titlebarRect.size.height;
CGImageRef imageRef = CGWindowListCreateImage(frame, kCGWindowListOptionIncludingWindow|kCGWindowListOptionOnScreenOnly, 0, kCGWindowImageDefault);
NSImage *image = [[NSImage alloc] initWithCGImage:imageRef size:frame.size];
if (imageRef) {
CFRelease(imageRef);
}
NSString *scoreString = [NSString stringWithFormat:@"Just scored %ld. ", (long)_score];
NSArray *items = @[scoreString, image];
NSSharingService *service = [NSSharingService sharingServiceNamed:NSSharingServiceNamePostOnTwitter];
[service performWithItems:items];
}
* 의문점
Map App Store은 내장 프레임워크를 사용해서 소셜 공유를 하고, 왜 iTunes는 왜 웹으로 공유를 하는 것일까? Windows 용이 있어서 그런것일까? 맥용에만 프레임워크 적용해서 공유하게 해줬으면 하는 바람.
'iDev > Mac Dev' 카테고리의 다른 글
OS X Dock 아이콘에 파일 떨구기(drop) (1) | 2014.08.29 |
---|---|
OS X에서 하나의 프로그램을 동시에 여러 개 실행하는 앱 (1) | 2014.08.29 |
Mac App 자동생성 About 윈도우 Credits 내용 수정하기 (0) | 2014.02.23 |
Provisioning Profile 상태가 Pending 일 때 (0) | 2014.02.19 |
OSX 게임센터 리더보드 점수 저장 (0) | 2014.02.19 |