• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 在同一中心位置缩放一个圆圈

[复制链接]
菜鸟教程小白 发表于 2022-12-12 15:51:48 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在努力缩放圆并保持相同的中心位置,这看起来像 map 上的脉动圆。

AnimationView.m

@property (nonatomic, strong) UIBezierPath *ovalPath;

- (void)drawCircle
{
    UIGraphicsBeginImageContext(self.frame.size);
    CGRect rect = CGRectMake(25.45, 49.25, 5.8, 5.8);
    self.ovalPath = [UIBezierPath bezierPathWithOvalInRect: rect];
    [self.ovalPath fill];
    UIGraphicsEndImageContext();
}

- (void)bumpUpCircle
{
    CAShapeLayer *pathLayer = [CAShapeLayer layer];

    pathLayer.frame     = self.bounds;
    pathLayer.path      = self.ovalPath.CGPath;
    pathLayer.fillColor = [UIColor blackColor].CGColor;
    pathLayer.lineWidth = 2.0f;
    pathLayer.lineJoin  = kCALineJoinBevel;
    [self.layer addSublayer:pathLayer];

    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath"transform.scale"];
    animation.fromValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.0, 0.0, 0)];
    animation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(10.0, 10.0, 10.0)];
    animation.repeatCount = 1;
    animation.removedOnCompletion = NO;
    animation.fillMode = kCAFillModeForwards;
    animation.duration = 1;
    animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
    [pathLayer addAnimation:animation forKey"transform.scale"];
    NSLog(@"%@",NSStringFromCGPoint(self.bounds.origin));
}

但是,缩放位置在一个奇怪的位置,而不是圆的中心。

任何想法将不胜感激。谢谢。

编辑:

GIF uploaded



Best Answer-推荐答案


我对你的脉冲圈建议是使用 UIView 并将其作为 subview 添加到你的 UIViewController 中。在下面的示例中,您会得到一个脉冲圆(一个 UIView 与一个 cornerRadius 类似半径)在几行中向上和向下缩放。包括这个,例如在你的 UIViewControllerviewDidLoad 中尝试一下。

int radius = 100;
UIView * circleView = [[UIView alloc] init];
circleView.backgroundColor = [UIColor greenColor];
circleView.frame = CGRectMake(0, 0, radius*2, radius*2);
circleView.center = self.view.center;
circleView.layer.cornerRadius = radius;
[self.view addSubview:circleView];

[UIView animateWithDuration:0.8f
                      delay:0.0f
                    options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat
                 animations:^{
                     circleView.transform = CGAffineTransformMakeScale(1.1, 1.1);
                 } completion:^(BOOL fin) { 
                     // Do nothing
                 }];

关于ios - 在同一中心位置缩放一个圆圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31487293/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap