2011-10-16 2 views
3

현재 MKMapView가 포함 된보기가 있습니다. 또한 별도의 UIView (Made in IB)를 기존 뷰로 슬라이드하고 싶습니다.UIView를 현재보기 (iPhone) 상단에 측면에서 슬라이드하는 방법

내가하고 싶은 방식은 왼쪽에서보기를 슬라이드하는 동시에지도보기의 크기를 줄이는 것입니다.

나는 또한보기가 왼쪽으로 미끄러지고 그 간격을 메우기 위해지도보기가 확장되도록 반대가 가능하기를 원합니다.

유일한 캐치는이 애니메이션을 멋진 부드러운 애니메이션으로 만들고 싶다는 것입니다. UIView를 맨 위에 표시 한 다음 맵보기의 크기를 조정하는 방법을 알고 있습니다. 그러나 이것은 매우 까다 롭습니다. iAd 배너가 화면 안팎으로 움직일 때 (UIView가 화면 상을 움직이는 것과 같은 비율로 맵보기의 크기가 변경됨) 볼 때 더 효과적입니다.

죄송합니다.이 작업이 간단한 작업 인 경우 처음으로 애니메이션 작업을합니다.

미리 감사드립니다.

답변

8

가장 간단한 방법은 UIView 애니메이션 메서드를 사용하는 것입니다. 이 같은 것은 :

[UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:1.0]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    slideInView.frame = CGRectMake(0,0,320,20); 
    mapView.frame = CGRectMake(0,20,320,460); 
    [UIView commitAnimations]; 

그리고 그 반대의 프레임 크기는 비슷합니다.

+0

감사합니다. 내가 가지고있는 유일한 문제는 내가보기에 추가 한 레이블이 (IB에서) 나타나지 않는다는 것입니다. 왜 그런가? –

+0

@ 존 : 작동해야합니다. 또는이 링크를 시도해보십시오. http://stackoverflow.com/questions/5392263/how-can-i-slide-text-from-left-to-right-in-iphone – Devang

+0

IB에서 만든 뷰를 표시합니다. 내 초기 UIView에서 숨길 수 있습니까? 만약 그렇다면 어떻게 그 위에 표시되도록 할 수 있습니까? –

0

이것은 내가 UIView 애니메이션을 사용하여 수행 한 것입니다. 필요에 따라 프레임 크기를 변경할 수 있습니다.

self.mapView.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 350) 


slideInView.frame = CGRect(x: 0, y: -320, width: self.view.frame.size.width, height: 250) 
     UIView.animate(withDuration: 1.0, delay: 0.1, options: [.curveEaseIn] , animations: { 
      self.slideInView.frame = CGRect(x: 0, y: 64, width: self.view.frame.size.width, height: 250) 
     }) 
     {(BOOL) in} 

self.view.addSubview(slideInView) 
관련 문제