我有一个图像(innerCircle),它使用以下动画随着动画的增长和缩小:
UIView.animateWithDuration(5, delay:0, options: [.Repeat, .Autoreverse], animations: { () -> Void in
self.innerCircle.transform = CGAffineTransformMakeScale(3.5, 3.5)
}) { (finished: Bool) -> Void in
UIView.animateWithDuration(1, animations: { () -> Void in
self.innerCircle.transform = CGAffineTransformIdentity
我想在动画期间的任何时候获取图像的当前大小,以便我可以检查它何时超出某个点。我想这样做,所以我可以改变" Inhale"到"呼气"反之亦然。
我尝试过使用
let innerCircleWidth = self.innerCircle.image!.size.width
但只获得初始宽度值。它没有更新。
非常感谢!
答案 0 :(得分:0)
那是因为图像的大小没有变化。应用变换不会改变视图的大小。
答案 1 :(得分:0)
使用UIView.animateWithDuration
获取有关当前显示内容的准确信息时,您应该检查presentationLayer
动画视图的innerCircle.layer.presentationLayer()?.frame
,在您的情况下import UIKit
import XCPlayground
let outerCircle = UIView(frame: CGRect(x: 0, y: 0, width: 1000, height: 1000))
let innerCircle = UIView(frame: CGRect(x: 0.0, y: 0.0, width: 100, height: 100))
outerCircle.addSubview(innerCircle)
innerCircle.center = outerCircle.center
innerCircle.backgroundColor = UIColor.redColor()
UIView.animateWithDuration(5, delay:0, options: [.Repeat, .Autoreverse], animations: { () -> Void in
innerCircle.transform = CGAffineTransformMakeScale(3.5, 3.5)
}) { (finished: Bool) -> Void in
UIView.animateWithDuration(1, animations: { () -> Void in
innerCircle.transform = CGAffineTransformIdentity
})
}
class TimerObject: NSObject {
override init()
{
super.init()
let timer = NSTimer(timeInterval: 0.10, target: self, selector: #selector(self.printPresentationFrame), userInfo: nil, repeats: true)
NSRunLoop.mainRunLoop().addTimer(timer, forMode: NSDefaultRunLoopMode)
}
@objc func printPresentationFrame()
{
print(innerCircle.layer.presentationLayer()?.frame)
}
}
let timerObject = TimerObject()
XCPlaygroundPage.currentPage.liveView = outerCircle
不是视图的框架本身。有关此内容的详细信息,请参阅here。
要了解其工作原理,您可以将以下代码放在一个快速的游乐场中。
row.record.cells["exception"].value.join (" ")