私は画面の上部に四角形を表示し、底部に達するまで実行して消えます。これは、新しいUIViewをViewControllerのビューに追加してから、アニメーションが完了した後、サブビュー配列から削除します。このすべてにいくつかの美しさを加えたいと思って、作成の瞬間にCGAffineTransformを使ってランダムな回転を適用します。UIViewのアニメーション作成時に不思議な効果
ここで好奇心をそそるのは、彼らが動いているとき、彼らはランダムに拡大縮小されているということです!私はそれが回転に関連している必要があることを知っています。私がそれを適用しないと、すべての四角形がスケーリングせずに完全に移動するので、しかし、私はそれを適用すると起こるので...
何が起こっているのか教えてください...なぜスケーリングがスケーリングですか?
これはコードです:
import UIKit
class ViewController: UIViewController {
var timer: Timer!
override func viewDidLoad() {
timer = Timer.scheduledTimer(
timeInterval: 1,
target: self,
selector: #selector(createView),
userInfo: nil,
repeats: true
)
}
@objc private func createView() {
let v = UIView(frame: CGRect(
x: self.view.bounds.width/2 - 50,
y: -100,
width: 100,
height: 100
))
v.backgroundColor = UIColor.red
v.transform = CGAffineTransform(
rotationAngle: CGFloat(Double(arc4random_uniform(360)) * M_PI/180)
)
self.view.addSubview(v)
UIView.animate(withDuration: 5, delay: 0, options: [.curveLinear], animations: {
v.frame.origin.y = self.view.bounds.height
}, completion: {
_ in
v.removeFromSuperview()
})
print(self.view.subviews.count)
}
}
これは完璧に機能しました!どうもありがとうございます! –
心配はいりません。ビューのフレームを見るときに奇妙な結果が得られたり、フレームを変更すると奇妙な結果が生じるたびに、非恒等変換をチェックします。私はこのルールを忘れてしまって、何が間違っているのか把握しようと、頭を掻き回す時間を無駄にしました。 –