Haben Sie hier eine Beispielanwendung geschrieben, um etwas Animationsverhalten zu illustrieren, das nicht ganz richtig zu sein scheint? Ich erstelle eine Stapelansicht in der unteren Hälfte des Bildschirms, füge eine Schaltfläche hinzu, animiere sie, verschiebe sie auf den Bildschirm {bewegt sich} einschließlich der Schaltfläche, aber die Aktion, die der Schaltfläche angehängt ist, bleibt in der unteren Hälfte?Stack View Bug oder habe ich etwas übersehen?
Tatsächlich, wenn ich den Debugger auf Xcode ansehe, hat es sich überhaupt nicht bewegt.
Es gibt einige Action, die ich hier verpasst habe? Ja?
import UIKit
class ViewController: UIViewController {
var selectSV: UIStackView!
var goNorth:CABasicAnimation!
override func viewDidLoad() {
super.viewDidLoad()
selectSV = UIStackView(frame: CGRect(x: 256, y: 696, width: 256, height: 196))
selectSV!.axis = .Vertical
selectSV!.spacing = 4.0
selectSV!.alignment = .Center
selectSV!.distribution = .FillEqually
let zeroRect = CGRect(x: 0,y: 0,width: 0,height: 0)
let newB = UIButton(frame: zeroRect)
newB.setTitle("Blah", forState: UIControlState.Normal)
newB.titleLabel!.font = UIFont(name: "Palatino", size: 24)
newB.frame = CGRect(x: 0, y: 0, width: 128, height: 32)
newB.addTarget(self, action: #selector(ViewController.blahblah(_:)), forControlEvents: .TouchUpInside)
newB.backgroundColor = UIColor.blueColor()
self.selectSV.addArrangedSubview(newB)
self.view.addSubview(selectSV)
NSTimer.scheduledTimerWithTimeInterval(4.0, target: self, selector: #selector(ViewController.moveSV), userInfo: nil, repeats: false)
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func blahblah(sender: AnyObject) {
print("You hit me!")
}
func moveSV() {
self.animateNorth()
self.selectSV.layer.addAnimation(self.goNorth, forKey: nil)
}
func animateNorth() {
goNorth = CABasicAnimation(keyPath: "position.y")
goNorth.fromValue = 792
goNorth.toValue = 288
goNorth.duration = 4.0
goNorth.delegate = self
goNorth.setValue("window", forKey:"goNorth")
goNorth.removedOnCompletion = false
goNorth.fillMode = kCAFillModeForwards
}
}