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

ios - iPhone : Animate circle with UIKit

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

我正在使用一个 CircleView 类,它基本上继承了 UIView 并实现 drawRect 来绘制一个圆。这一切都有效,万岁!

但我无法弄清楚如何制作它,所以当我触摸它(实现触摸代码)时,圆圈会变大或弹出。通常我会使用 UIKit 动画框架来执行此操作,但考虑到我基本上是重写 drawRect 函数来直接绘制圆。那么如何制作动画呢?

- (void)drawRectCGRect)rect{
    CGContextRef context= UIGraphicsGetCurrentContext();

    CGContextSetFillColorWithColor(context, _Color.CGColor);
    CGContextFillEllipseInRect(context, CGRectMake(0, 0, self.frame.size.width, self.frame.size.height));
}

- (void)handleSingleTapUITapGestureRecognizer *)recognizer {
    // Animate?
}



Best Answer-推荐答案


答案取决于您所说的“增长或流行”。当我听到“pop”时,我假设 View 会在短时间内放大,然后再次缩小到原始大小。另一方面,“增长”的东西会扩大,但不会再次缩小。

对于在短时间内再次放大和缩小的东西,我会使用变换来缩放它。无论是否自定义绘图,UIView 都内置了对简单变换动画的支持。如果这是您正在寻找的内容,那么它不会超过几行代码。

[UIView animateWithDuration:0.3
                      delay:0.0
                    options:UIViewAnimationOptionAutoreverse // reverse back to original value
                 animations:^{
                     // scale up 10%
                     yourCircleView.transform = CGAffineTransformMakeScale(1.1, 1.1);
                 } completion:^(BOOL finished) {
                     // restore the non-scaled state
                     yourCircleView.transform = CGAffineTransformIdentity;
                 }];

另一方面,如果您希望圆圈在每次点击时都增大一点,那么这对您来说是不可行的,因为 View 在放大时看起来会像素化。制作自定义动画可能会很棘手,所以我仍然建议您对实际动画使用缩放变换,然后在动画之后重绘 View 。

[UIView animateWithDuration:0.3
                 animations:^{
                     // scale up 10%
                     yourCircleView.transform = CGAffineTransformMakeScale(1.1, 1.1);
                 } completion:^(BOOL finished) {
                     // restore the non-scaled state
                     yourCircleView.transform = CGAffineTransformIdentity;
                     // redraw with new value
                     yourCircleView.radius = theBiggerRadius;
                 }];

如果您真的非常想做一个完全自定义的动画,那么我建议您观看 Rob Napiers talk on Animating Custom Layer Properties ,他的例子甚至是你正在做的事情(增长一个圆圈)。

关于ios - iPhone : Animate circle with UIKit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19668824/

回复

使用道具 举报

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

本版积分规则

关注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