我想知道如何在地图中实现带有当前位置脉动环的蓝球,但没有地图视图。
基本上,我想知道每当用户触摸屏幕时,在普通UIView (或我的自定义视图)上显示带有脉动环的蓝色球的最佳方法,该触摸是蓝色球的中心。
我有两个想法,首先我可以实现一个动画,我不能这样做,但它可能是可能的。其次,我可以获得一系列图像,比如gif,并将其显示在用户触摸的任何位置。
哪一个是最好的选择?还是有更好的选择?
谢谢。
发布于 2013-01-01 02:29:50
试试这个:
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(200, 200, 100, 100)];
view.backgroundColor = [UIColor blueColor];
view.layer.cornerRadius = 50;
[self.view addSubview:view];
CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
scaleAnimation.duration = 0.2;
scaleAnimation.repeatCount = HUGE_VAL;
scaleAnimation.autoreverses = YES;
scaleAnimation.fromValue = [NSNumber numberWithFloat:1.2];
scaleAnimation.toValue = [NSNumber numberWithFloat:0.8];
[view.layer addAnimation:scaleAnimation forKey:@"scale"];根据需要设置参数,以修改效果。
编辑:
您必须添加QuartzCore框架,并包含<QuartzCore/QuartzCore.h>才能正常工作。
发布于 2015-06-18 21:12:26
在SWIFT上试试这个
let view:UIView = UIView(frame: CGRectMake(200, 200, 100, 100))
view.layer.cornerRadius = 50
view.backgroundColor = UIColor.blueColor()
self.view.addSubview(view)
let scaleAnimation:CABasicAnimation = CABasicAnimation(keyPath: "transform.scale")
scaleAnimation.duration = 0.5
scaleAnimation.repeatCount = 30.0
scaleAnimation.autoreverses = true
scaleAnimation.fromValue = 1.2;
scaleAnimation.toValue = 0.8;
view.layer.addAnimation(scaleAnimation, forKey: "scale")发布于 2013-01-01 02:10:41
更好的方法是通过编程来制作动画,而不是使用图像序列(苹果也是这样做的)。它有许多优点,尤其是性能更好(您的图像序列动画不太可能以60fps的速度运行!)。
若要确保脉动动画无限期重复,可以设置UIView动画重复属性。你的中心“蓝球”可以是一个覆盖在顶部的单独的UIImageView。
UIView动画相当简单,苹果有很多示例代码可以让你上手。您只需将要在动画块中设置动画的属性与动画参数(持续时间、重复等)封装在一起,剩下的工作将由iOS完成。在StackOverflow上搜索“UIView动画”会给你很多可能会有帮助的问题。
https://stackoverflow.com/questions/14104727
复制相似问题