Если я изменю регион в setRegion
на MKMapView
, есть ли способ установить скорость или продолжительность этого изменения анимации? Я просмотрел документацию и Google, но ничего не нашел.
скорость setRegion для MKMapView
comment
Нет, изменить их невозможно.
- person Deepak Danduprolu   schedule 15.06.2011
comment
Вы проверили это: Управление скоростью анимации MKMapView в iOS6
- person theaob   schedule 16.08.2013
Ответы (2)
И вот простое в использовании расширение Swift на случай, если кто-то наткнется на это в будущем.
import MapKit
extension MKMapView {
func animatedZoom(zoomRegion zoomRegion:MKCoordinateRegion, duration:NSTimeInterval) {
MKMapView.animateWithDuration(duration, delay: 0, usingSpringWithDamping: 0.6, initialSpringVelocity: 10, options: UIViewAnimationOptions.CurveEaseIn, animations: {
self.setRegion(zoomRegion, animated: true)
}, completion: nil)
}
}
Обновление до Swift 5:
extension MKMapView {
func animatedZoom(zoomRegion:MKCoordinateRegion, duration:TimeInterval) {
MKMapView.animate(withDuration: duration, delay: 0, usingSpringWithDamping: 0.6, initialSpringVelocity: 10, options: UIView.AnimationOptions.curveEaseIn, animations: {
self.setRegion(zoomRegion, animated: true)
}, completion: nil)
}
}
person
kernelpanic
schedule
02.09.2015
Идеальное решение! Спасибо!
- person beseder; 20.07.2016
@beseder Согласен!
- person AamirR; 12.03.2018
Я смог установить продолжительность анимации setRegion
, отредактировав ответ на вопрос - Установка уровня масштабирования для MKMapView - следующим образом:
#import <MapKit/MapKit.h>
@interface MKMapView (ZoomLevel)
- (void)setCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate
zoomLevel:(NSUInteger)zoomLevel
animated:(BOOL)animated;
@end
#import "MKMapView+ZoomLevel.h"
@implementation MKMapView (ZoomLevel)
#define ANIMATION_DURATION 0.5
- (void)setCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate
zoomLevel:(NSUInteger)zoomLevel animated:(BOOL)animated {
MKCoordinateSpan span = MKCoordinateSpanMake(0, 360/pow(2,zoomLevel)*self.frame.size.width/256);
[MKMapView animateWithDuration:ANIMATION_DURATION animations:^{
[self setRegion:MKCoordinateRegionMake(centerCoordinate, span) animated:YES];
}];
}
person
Josh Gafni
schedule
28.07.2014