보통은 UIViewController 안에서의 메서드나, 따로 노티를 등록해서 감지하지만,
트윅에선 여의치 않거나 저 방법을 쓰기 싫을때가 있다.
각 앱에선 뭘 후킹해야 할지 잘 모르겠고 SpringBoard 에서 후킹해서 노티를 날려주는 방법으로 사용하고 있음.
출처는 MouseSupport 의 소스...ㅋㅋㅋ
%hook SpringBoard
iOS3.2~5
-(void)frontDisplayDidChange
-(void)noteInterfaceOrientationChanged:(int)orientation
iOS6
-(void)noteInterfaceOrientationChanged:(int)orientation duration:(double)duration
iOS6 의 경우 화면회전 되기 전에 호출되는 듯.(아닐 수도 있고)
orientation 인자를 받거나 0.2 초 정도 후에 회전값을 받아오면 된다.
그리고 화면 값 자체는 UIApp([UIApplication sharedApplication]) 의 statusBarOrientation 를 받아왔었는데 원래 그랬는지
iOS6 이후 바뀌었는지 SpringBoard 의 화면회전 상태만을 기억하고 받아오지, 현재 실행중인 앱의 회전 값은 받아오지 않음.
마찬가지로 UIApp의 activeInterfaceOrientation 메서드를 사용하면 정상적으로 받아올 수 있다.
만약 SpringBoard 가 아니라 각 앱에서 노티를 받는다면 크게 상관없을 거고...
iOS6 이전에도 존재했는지는 확실치 안아서 그냥 respondsToSelector 로 넘겼음.
'개발개발 > Mac, iOS' 카테고리의 다른 글
[THEOS] Dynamic Library 를 weak 로 사용하기 (0) | 2013.06.30 |
---|---|
UITableView header 에서 UIActivityIndicator 사용하기 (0) | 2013.03.24 |
[번역] MobileSubstrate의 위험들 (0) | 2013.03.02 |
트윅 제작을 쉽게 하는 툴들 (5) | 2013.03.02 |
UIWebView 사이즈에 페이지 너비 맞추기 (5) | 2013.02.17 |