2014-03-06 3 views
0

내 프로젝트에는 맨 아래 부분에 큰 UIView 하위보기가있는보기 컨트롤러가 두 개 있습니다. (내 다이어그램에서보기 컨트롤러 1입니다.)이 UIView에서 사용자가 탭하면 위로 이동하여 두 번째보기 컨트롤러의보기. 이것은 iOS 용 Google지도의 관심 장소보기와 거의 같습니다. 장소를 검색했을 때 화면 하단에 작은보기가 표시되어 상호 작용할 때 화면을 채 웁니다. 이는 실제로 내가 원하는 것입니다.모달로 표시되는 UIViewController의 UIView를 화면 하단에 항상 표시하려면 어떻게해야합니까?

제 궁금한 점은 이것을 구현하는 가장 좋은 방법은 무엇일까요? 궁극적으로 UIViewController를 모달로 표현하는 것과 매우 흡사합니다. 단, UIView는 항상 차이 크기가 존재합니다.

enter image description here

enter image description here

+0

이전보기에서 상호 작용을 잃었을뿐 아니라 iPad에서 팝업 표시 이외의 항목과의 상호 작용을 잃을 수 있으므로 모달보기가 될 수 없습니다.보기 컨트롤러는 전체 화면입니다. 동일한 뷰 컨트롤러에 하위 UIView를 만드는 것을 고려하십시오. 동작을 제어하려면 제스처 인식기를 사용하십시오. –

답변

1

두 개의 분리 된보기 컨트롤러가 필요하다고 생각하지 않습니다. 귀하가 UIViewController에 약간 UIScrollView을 맞춤 설정하기 만하면됩니다.

먼저 scrollView 의ContentSize를 설정해야합니다. 그런 다음 스크롤하려는 것을 원하지 않으므로 UIScrollView을 스크롤하지 못하게해야합니다.

self.scrollView =[[UIScrollView alloc] initWithFrame:[UIScreen mainScreen].bounds]; 
    self.scrollView.delegate = self; 
    self.scrollView.contentSize = CGSizeMake(320, 568 + x ); // x represents the height of white screen in your first view controller. 
    self.scrollView.bounces = NO; 
    self.scrollView.scrollEnabled = NO; 

둘째, 당신이 필요합니다 당신의 UIViewUITapGestureRecognizer 화면에 완전히 표시 할 추가 할 수 있습니다. 다음 코드 조각은 당신이 당신의 UIScrollViewcontentOffset을 변경하여 화면에 UIView 완전히 새로운를 표시하기 위해 마지막으로, tapped 방법을 구현할 수

UITapGestureRecognizer *tapGestureRecognizer = 
     [[UITapGestureRecognizer alloc] initWithTarget:self 
               action:@selector(tapped:)]; 
tapGestureRecognizer.numberOfTapsRequired = 1; 
[view addGestureRecognizer:tapGestureRecognizer]; 

를 사용할 수 있습니다. 탐색 바가 사라지는 것을 잊지 마십시오. 따라서

- (void)tapped{ 
    self.navigationController.navigationBarHidden = YES; 
    [self.scrollView setContentOffset:CGPointMake(0,view1.frame.origin.y) animated:YES]; 
} 

마지막으로, 두 번째보기를 화면에 완전히 표시합니다. 나는 당신이 iPhone> 5를 사용한다고 가정하고 정적 인 값을 사용했지만, 실행중인 장치에 따라 높이의 동적 인 값을 사용할 수 있습니다. 두 번째보기에서 setUserInteractionEnabled을 잊지 마세요.

내 실수로 네비게이션 바가 좋지만 큰 문제는 아니 겠지만 그냥 setContentOffset 값을 변경하고 navigationBarHidden 속성을 사용하지 않아야한다고 생각합니다.

+0

대단히 감사합니다. 나는 주말에 이것을 시험해 볼 것이다. 그러면 나는이 대답을 받아 들일 것이다. –

+0

@mMo, 그걸 시도 했니? – limon

+0

오늘 시험 해봤는데, 지금까지 잘 작동하고있어, 정말 고마워! –

1

난 그냥 하나의 뷰 컨트롤러를 사용하고 낮은보기 그것의 하위 뷰를 만들 것 감사드립니다. 기본보기에서 탭을 감지하면 하단보기를 위로 밀어 필요한만큼 크기와 위치를 조정할 수 있습니다.

관련 문제