向 UIDynamicAnimator 添加超过 32 个 UIFieldBehaviors 会导致 SIGABRT
Adding more than 32 UIFieldBehaviors to a UIDynamicAnimator causes a SIGABRT
我有以下代码。当我迭代 25 次 (5 * 5) 时,它工作正常。当我迭代 36 次时(for 循环中为 6 * 6),它因 SIGABRT 而崩溃。我已经粘贴了错误的图片(Xcode 中的 Playgrounds 不允许我复制粘贴它)。这是一个内部错误,某处定义了 32 个行为的限制,还是我的代码中的错误?谢谢!
//: A UIKit based Playground for presenting user interface
import UIKit
import PlaygroundSupport
class MyViewController : UIViewController {
var animator : UIDynamicAnimator!
var springfields : [UIFieldBehavior] = []
override func loadView() {
let view = UIView()
view.backgroundColor = .white
animator = UIDynamicAnimator(referenceView: view)
for i in 1...6 {
for j in 1...6 {
let newView = UIView()
let dotwidth = 12
newView.layer.cornerRadius = CGFloat(dotwidth/2);
newView.frame = CGRect(x:20+i*25, y:20+j*25, width:dotwidth, height:dotwidth)
newView.clipsToBounds = true
newView.backgroundColor = .black
let newSpringField = UIFieldBehavior.springField()
springfields.append(newSpringField)
newSpringField.addItem(newView)
newSpringField.position = newView.center
view.addSubview(newView)
animator.addBehavior(newSpringField)
}
}
self.view = view
}
}
// Present the view controller in the Live View window
PlaygroundPage.current.liveView = MyViewController()
PlaygroundPage.current.needsIndefiniteExecution = true
运行 您在应用程序中的代码,调试控制台输出为:
*** Terminating app due to uncaught exception 'Invalid Association', reason: 'UIDynamicAnimator supports a maximum of 32 distinct fields'
我有以下代码。当我迭代 25 次 (5 * 5) 时,它工作正常。当我迭代 36 次时(for 循环中为 6 * 6),它因 SIGABRT 而崩溃。我已经粘贴了错误的图片(Xcode 中的 Playgrounds 不允许我复制粘贴它)。这是一个内部错误,某处定义了 32 个行为的限制,还是我的代码中的错误?谢谢!
//: A UIKit based Playground for presenting user interface
import UIKit
import PlaygroundSupport
class MyViewController : UIViewController {
var animator : UIDynamicAnimator!
var springfields : [UIFieldBehavior] = []
override func loadView() {
let view = UIView()
view.backgroundColor = .white
animator = UIDynamicAnimator(referenceView: view)
for i in 1...6 {
for j in 1...6 {
let newView = UIView()
let dotwidth = 12
newView.layer.cornerRadius = CGFloat(dotwidth/2);
newView.frame = CGRect(x:20+i*25, y:20+j*25, width:dotwidth, height:dotwidth)
newView.clipsToBounds = true
newView.backgroundColor = .black
let newSpringField = UIFieldBehavior.springField()
springfields.append(newSpringField)
newSpringField.addItem(newView)
newSpringField.position = newView.center
view.addSubview(newView)
animator.addBehavior(newSpringField)
}
}
self.view = view
}
}
// Present the view controller in the Live View window
PlaygroundPage.current.liveView = MyViewController()
PlaygroundPage.current.needsIndefiniteExecution = true
运行 您在应用程序中的代码,调试控制台输出为:
*** Terminating app due to uncaught exception 'Invalid Association', reason: 'UIDynamicAnimator supports a maximum of 32 distinct fields'