我有一个自定义的视图,我想每3秒旋转90度,下面是我使用的代码

private func _rotateSelf(duration: Double = 1.0, delay: Double = 3.0) {
    print("self._rotateSelf() called from UICustomView")
    
    UIView.animate(withDuration: duration, delay: delay, options: [.curveEaseInOut], animations: {
        // TODO: this only works on the first function call
        self.transform = CGAffineTransform.identity.rotated(by: (.pi / 2))
    }, completion: { finished in
        if finished == true {
            print("Animation finished")
            self._rotateSelf()
        }
    })
}

问题是,动画仅在第一次调用该函数时才起作用.在那之后的每一次调用,都没有动画发生,函数只是被一次又一次地调用,最终冻结了应用程序.

我有什么不明白的吗?

推荐答案

您不能每次都多旋转90度.您仅设置了90度的总旋转.旋转视图的当前变换,而不是对identity变换应用旋转.

self.transform = self.transform.rotated(by: .pi / 2)

Ios相关问答推荐

ITMS—91053:Flutter Project中缺少API声明

如何从ipad获取用户定义的设备名称,IOS版本应大于16在flutter

AlGolia InstantSearch Swift Package Manager引发编译错误

更新@PersistableEnum时是否需要执行迁移块?

在工作表上移动图像SwiftUI

在嵌套的DISPATCH_AFTER块中正确使用strong自/弱自

SwiftUI HStack 文本字段对齐

小部件链接有效,但不执行任何操作

SwiftUI 图像与下拉视图切换一起 skip

如何在Collection 后更改并保留按钮 colored颜色 ,然后在 SwiftUI 中切换回来?

JSONDecoder 在模拟器上运行良好时无法在真实设备上解码

如何让我的 iOS 应用程序与 api 连接?

SignalR 永远不会在 iOS 上使用 Xamarin Forms 启动

如何快速设置条形按钮的图像?

iOS:应用程序在安装应用程序时未征求用户许可.每次都获得 kCLAuthorizationStatusNotDetermined - Objective-c & Swift

改变 UIView 位置的简单方法?

在主线程上发布 NSNotification

如何在上传到服务器之前在 iOS 上压缩/调整图像大小?

如何找出用于构建 *.ipa 文件的配置文件?

iOS13状态栏背景 colored颜色 与大文本模式下的导航栏不同