Реплицируйте излучающие круги как местоположение пользователя на MKMapView - PullRequest
1 голос
/ 20 октября 2011

Возможно ли иметь излучающие круги, подобные аннотации местоположения пользователя. Так что у пользовательских аннотаций есть излучающие круги других цветов. Если нет, то есть ли какой-нибудь хакерский способ заставить его работать?

Ответы [ 2 ]

4 голосов
/ 05 апреля 2012

Проверьте это. Вы можете сделать то, что вам нужно с этим. С комбинацией использования Core Animation и подклассов MKCircleView или MKOverlayView.

http://yickhong -ios.blogspot.com / 2012/04 / анимированный-круг-на-mkmapview.html

2 голосов
/ 25 октября 2011

Можно создать собственный подкласс UIView, который делает это. UIView с двумя подслоями, один для центрального шара и один для расширяющихся колец. Слой кольца и слой шара можно создать, создав подкласс CALayer и переопределив drawInContext: так вы сможете получить любые цвета, которые захотите. Код для анимации колец, чтобы они одновременно расширялись и исчезали, мог бы использовать CAAnimationGroup следующим образом:

// expand the ring from the ball size to the ring's max size
CABasicAnimation *sizeAnim = [CABasicAnimation animationWithKeyPath:@"bounds"];
sizeAnim.fromValue   = [NSValue valueWithCGRect:ballBounds];
sizeAnim.toValue     = [NSValue valueWithCGRect:ringBoundsMax];
sizeAnim.duration    = kRingExpansionTime;

// fade out the ring part way thru the animation
CABasicAnimation* alphaAnim = [CABasicAnimation animationWithKeyPath:@"opacity"];
alphaAnim.fromValue   = [NSNumber numberWithFloat:1];
alphaAnim.toValue     = [NSNumber numberWithFloat:0];
alphaAnim.beginTime   = kRingExpansionTime * 0.7f;      // start part way thru
alphaAnim.duration    = kRingExpansionTime - alphaAnim.beginTime;

CAAnimationGroup* group = [CAAnimationGroup animation];
group.duration    = kRingExpansionTime;
group.repeatCount = HUGE_VALF;      // repeat forever
group.animations  = [NSArray arrayWithObjects:sizeAnim, alphaAnim, nil];
[ringLayer addAnimation:group forKey:nil];
...