2016-12-08 6 views
6

여기 이미지가 UIImageView이며,이 이미지는 일반적인지도 선택 도구입니다. 스토리 보드의지도에 표시하고 몇 가지 제약 조건을 지정했습니다.사용자가 MKMapView를 끌 때 UIImageView를 어떻게 애니메이트 할 수 있습니까?

사용자가 내지도를 드래그하면 그 이미지는 그대로 유지됩니다. 움직이는 방법을 찾고 싶습니다. 기본적으로 드래그 한대로 조금 훑어보고 싶습니다.

는 이미 두 가지 방법이 있습니다

func mapView(_ mapView: MKMapView, regionWillChangeAnimated animated: Bool) { 

} 

func mapView(_ mapView: MKMapView, regionDidChangeAnimated animated: Bool) { 

} 

을하지만있는 UIImageView에 변화를 애니메이션하는 방법을 모르겠어요.

내가 regionWillChangeAnimated에 다음 코드를 추가하는 시도 :

myPositionPicker.animate(withDuration: 1.5, delay: 0.05 * Double(index), usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: { 
     yawpPositionPicker.transform = CGAffineTransform(translationX: 0, y: 0) 
    }, completion: nil) 

(myPositionPickerUIImageView입니다)하지만 날이 될 것이기

Static member animate cannot be used on instance of type UIImageView 

내가 최고의 애니메이션을 생각하는 오류

받고 있어요 UIViewAnimationOptions.curveEaseIn하지만 내 UIImageView에 첨부하는 방법을 모르겠습니다. 어떤 힌트라도 주시겠습니까? 우선

답변

1

, 당신은 예를 myPositionPicker에 정적 방법 "애니메이션"을 사용하려고합니다. 그리고 그것은 틀 렸습니다. 그냥 교체와

myPositionPicker.animate(withDuration: 1.5, delay: 0.05 * Double(index), usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: { 
    yawpPositionPicker.transform = CGAffineTransform(translationX: 0, y: 0) 
}, completion: nil) 

:

UIView.animate(withDuration: 1.5, delay: 0.05 * Double(index), usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: { 
    // Do whatever animations you want here. 
}, completion: nil) 

다음, 당신이 (UIImageView에 위치의 변경이나 크기의 변화처럼) 몇 가지 간단한 애니메이션을 만들려면 - 당신이 당신이 이미 생성 제약 조건을 사용할 수 있고 돈 아핀 변환을 사용하지 마십시오.

예를 들어, 이미지보기가지도보기와 수직으로 가운데에있는 경우. 먼저 UIViewController에서이 제약 조건에 대한 특수한 @IBOutlet을 만듭니다.

@IBOutlet var pickerCenterYConsraint: NSLayoutConstraint! 

두 번째로이 콘센트를 스토리 보드의 제약 조건에 연결합니다.

셋째,보기 컨트롤러가지도보기의 대리인이라는 것을 알았습니다. 다음과 같이지도보기 위임 프로토콜을 구현해 보겠습니다.

func mapView(_ mapView: MKMapView, regionWillChangeAnimated animated: Bool) { 
    UIView.animate(withDuration: 1.5, delay: 0.05, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: { 
     self.pickerCenterYConsraint.constant = 25.0 
     self.view.layoutIfNeeded() 
    }, completion: nil) 
} 

func mapView(_ mapView: MKMapView, regionDidChangeAnimated animated: Bool) { 
    UIView.animate(withDuration: 1.5, delay: 0.05, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: { 
     self.pickerCenterYConsraint.constant = 0.0 
     self.view.layoutIfNeeded() 
    }, completion: nil) 
} 

그리고 ... 그게 다야! 이제지도보기를 드래그하는 동안 이미지보기가 애니메이션으로 표시됩니다. 이 솔루션이 마음에 들지 않으면 제약 조건에 따라 고유 한 애니메이션을 만들 수 있습니다. 기본적으로 제약 조건으로 많은 일을 할 수 있습니다. 회전을 제외하고 예를 들면.

+0

이미지를 약간 기울이는 방법이 있습니까? 또는 이미지를 늘리거나 좁히려면? 이미지를 위아래로 움직이는 것이 아니라 스트레칭, 기울이기 등의 효과를 얻으려고합니다. – user3766930