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

ios - 圆形 UIView 缩放动画有时会回到正方形

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

我使用自动布局在屏幕中央放置了一个 UIView。这个 UIView 是一个正方形,大小为屏幕宽度的 15%。然后在我的 Controller 上添加cornerRadius:

override func viewDidLayoutSubviews() {
    circle.layer.cornerRadius = circle.frame.size.width / 2.0
}

然后,当用户单击按钮时,圆形 View 会随着第一个动画缩小。

UIView.animateWithDuration(0.4, delay: 0.1, options: .CurveEaseIn, animations: { () -> Void in
    self.circle.alpha = 0.0
    self.circle.transform = CGAffineTransformMakeScale(0.01, 0.01)
}) { (finished) -> Void in
    scaleUp()
}

private func scaleUp() {
    UIView.animateWithDuration(0.5, delay: 0.0, options: .CurveEaseInOut, animations: { () -> Void in
        self.circle.alpha = 1.0
        self.circle.transform = CGAffineTransformIdentity
    }) { (finished) -> Void in

    }
}

有时缩小动画无法正常工作。在开始之前,cornerRadius 被删除,我的 UIView 变成了一个正方形。但有时我的动画效果很好,圆圈缩小动画也可以。

此外,放大动画似乎一直运行良好。

我不明白为什么缩小动画一直不起作用。

有什么想法吗?

谢谢



Best Answer-推荐答案


在启用 Auto Layout 的情况下进行动画制作时,通常最好在开始动画之前在 View 上调用 layoutIfNeeded,然后在循环中再次调用。

override func viewDidLayoutSubviews() {
    circle.layer.cornerRadius = circle.frame.size.width / 2.0
}

@IBAction func scaleDownUp(sender: AnyObject) {
    self.circle.layoutIfNeeded()
    UIView.animateWithDuration(0.4, delay: 0.1, options: .CurveEaseIn, animations: { () -> Void in
        self.circle.alpha = 0.0
        self.circle.transform = CGAffineTransformMakeScale(0.01, 0.01)
        self.circle.layoutIfNeeded()
    }) { (finished) -> Void in
        self.scaleUp()
    }
}

private func scaleUp() {
    self.circle.layoutIfNeeded()
    UIView.animateWithDuration(0.5, delay: 0.0, options: .CurveEaseInOut, animations: {
        self.circle.alpha = 1.0
        self.circle.transform = CGAffineTransformIdentity
        self.circle.layoutIfNeeded()
    }) { (finished) -> Void in

    }
}

关于ios - 圆形 UIView 缩放动画有时会回到正方形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38419133/

回复

使用道具 举报

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

本版积分规则

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