나는 Facebook-esque 슬라이드 오버 UITableView를 사용할 것이다.잠깐 UINavigationView 이동하기 - Facebook 스타일
나는 것을 성취 한 애니메이션과 그림자 모두를 놓습니다. 내 걱정은 내가 그것을 완전히 잘못된 길로하고있다. 그리고 그것은 모든 것이 올바르게 작동하지 않는다는 것이다.
응용 프로그램에는 UINavigationController 인 rootViewController (UIWindow의)가 있습니다. UINavigationController (루트보기 컨트롤러) 내부의 뷰에는 leftBarButtonItem 속성이 설정되어 있습니다. 다음은 버튼을 누를 때 실행되는 코드입니다.
- (void)showFeedList {
//set the feed list as showing even before it is
feedListShowing = YES;
//to show the feed list, we need to instanciate one
feedSelectionListViewController = [[FeedSelectionListViewController alloc] initWithNibName: @"FeedSelectionListViewController" bundle: nil];
//set the frame to 200 points to the left of the screen
feedSelectionListViewController.view.frame = CGRectOffset(feedSelectionListViewController.view.frame, -200, 20);
NSInteger offset = feedSelectionListViewController.view.frame.size.width;
//store a pointer to the root navigation controller, and add the list view controller's view to the navigation controller's view
UINavigationController *navigationController = (UINavigationController *)UIApplication.sharedApplication.delegate.window.rootViewController;
[navigationController.view addSubview: feedSelectionListViewController.view];
//animate the navigation bar, feed selection list, and this view controller's view to the right
[UIView animateWithDuration: LIST_SHOW_TRANSITION_TIME animations: ^{
self.view.frame = CGRectOffset(self.view.frame, offset, 0);
navigationController.navigationBar.frame = CGRectOffset(navigationController.navigationBar.frame, offset, 0);
feedSelectionListViewController.view.frame = CGRectOffset(feedSelectionListViewController.view.frame, offset, 0);
}];
}
이것은 정말 지저분하고 모든 것이 제대로 작동하는 것은 아닙니다. 첫째, 사용자가 떠나서 응용 프로그램으로 돌아 오면 UINavigationBar가 프레임을 다시 설정 한 것처럼 보입니다. 통화 중 상태 표시 줄이 켜지거나 꺼질 때도 마찬가지입니다. 둘째, 오른쪽에있는보기 내의 모든보기가 오른쪽으로 이동하지 않습니다. 나는 이것이 왜 있는지 모른다. 내가
navigationController.view.frame = CGRectOffset(navigationController.view.frame, 200, 0);
와 애니메이션 블록을 교체하는 경우
그러나, 그것은 잘 작동합니다. 네비게이션 컨트롤러에 의해 현재 디스플레이 된 뷰의 서브 뷰가 그에 따라 이동하고, 애플리케이션이 재개 될 때 모든 것이 올바른 위치에있게된다. 그러나 사이드 바보기가 터치 이벤트를 수신하지 못하고, 사이드 바에서 이루어진 터치가 이제 AppDelegate에 의해 처리됩니다. UIView의 프레임에 {-200, 0}의 원점이 있기 때문에 이것이 확실하지는 않지만 이것이 의심 스럽습니다.
나는 뭔가를 이해하고 있다고 생각하지 않습니다. 이것을하는 것이 올바른 방법일까요? 나는 그것을하는 다른 방법을 생각할 수 없다. 어쨌든, 사전에 모든지도 또는 제안에 대한 감사드립니다.
- 매트 당신이해야 할 노력하고 정확히 무엇을 당신은 이미 내 https://github.com/pkluz/PKRevealController
의이 라이브러리가 설치되어 찾고있는
당신의 솔루션을 사용하는 것처럼 유혹하는 것처럼, 이것은 내 선생님을위한 프로젝트입니다 (그녀는 우리 학교 신문의 RSS 리더를 원합니다). 나는 꽤 바쁜 학생이므로 응용 프로그램 작업을 할 핑계가됩니다. 최근에 UIKit의 고급 기능을 사용하여 게임을 할 시간이별로 없었으므로 기술을 익히고 직접 구현하고 싶습니다 (드래그하고 탭하지 않기 위해 노력하고 있습니다). 나는 무슨 일이 일어나고 있는지 모르겠다 고 저를 괴롭혔습니다. 간단히 말해서, 나는 단지 사물을 받아들이는 것 대신에 왜 사물인지를 알고 싶어합니다. –
나는 당신의 자신의 해결책으로 당신을 더 잘 인도하기 위하여 편집을 추가했다. – pkluz
UIViewController 포함 메서드를 구현하는 내 자신의 UIViewController를 만드는 방법을 살펴 보겠습니다. - 당신의 안내에 감사드립니다. - 그러나 나는 아직도 혼란 스럽다. 내가 한 일이 왜 효과가 없었는가. UINavigationBar가 원래 위치로 돌아가는 이유와 UIView가 터치 이벤트를받지 못하는 이유와 UIView의 프레임을 변경해도 서브 뷰가 변경되지 않은 이유를 알고 싶습니다. 모두 매우 혼란 스럽습니다. –