У меня проблема в моем приложении. Я хочу, чтобы это произошло, когда я нажимаю кнопку2, она исчезает и перестает двигаться. Что происходит сейчас, так это то, что когда я нажимаю кнопку2, он исчезает, но не перестает двигаться (даже когда он скрыт). Любая помощь? Код:Как приостановить CADisplayLink?
@IBOutlet var label: UILabel!
@IBOutlet var label2: UILabel!
@IBOutlet var label3: UILabel!
@IBOutlet var button2: UIButton!
@IBAction func button3(sender: UIButton) {
label.hidden = false
button2.hidden = true
}
@IBOutlet var button4: UIButton!
@IBAction func button5(sender: UIButton) {
button4.hidden = true
label2.hidden = false
}
@IBAction func button1(sender: UIButton) {
label.hidden = true
label2.hidden = true
button2.hidden = false
button2.frame = CGRectMake(120, 400, 100, 100)
let displayLink = CADisplayLink(target: self, selector: "handleDisplayLink:")
displayLink.addToRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)
let time = dispatch_time(dispatch_time_t(DISPATCH_TIME_NOW), 2 * Int64(NSEC_PER_SEC))
dispatch_after(time, dispatch_get_main_queue()) {
self.button4.hidden = false
self.button4.frame = CGRectMake(120, 400, 100, 100)
let displayLink1 = CADisplayLink(target: self, selector: "handleDisplayLink1:")
displayLink1.addToRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)}
}
func handleDisplayLink(displayLink: CADisplayLink) {
var buttonFrame = button2.frame
buttonFrame.origin.y += -2
button2.frame = buttonFrame
if button2.frame.origin.y <= 50 {
displayLink.invalidate()
label3.hidden = false
button2.hidden = true
}
}
func handleDisplayLink1(displayLink1: CADisplayLink) {
var button4Frame = button4.frame
button4Frame.origin.y += -2
button4.frame = button4Frame
if button4.frame.origin.y <= 50 {
displayLink1.invalidate()
label3.hidden = false
button4.hidden = true
}
}
override func viewDidLoad() {
super.viewDidLoad()
label.hidden = true
button2.hidden = true
label2.hidden = true
button4.hidden = true
label3.hidden = true
// Do any additional setup after loading the view, typically from a nib.
}
спасибо. Антон
Для вашего третьего наблюдения, будет ли это работать, если бы у меня был таймер, работающий одновременно, или он обновит кадры и не сможет двигаться? –
Анимация происходит без проблем параллельно с таймером. Единственный трюк, который Я попытался описать, когда вы останавливаете анимацию в своем таймере, просто изучите слой презентации, чтобы выяснить, где он находился в середине полета, и «переместить» его в это же место, поэтому он остается там, где это было, когда вы остановили анимацию в обработчик таймера. – Rob
Я не уверен, что это то, о чем вы говорили, но когда я пытаюсь запустить приложение, это показывает: неожиданно найдено нуль при развертывании необязательного значения ... Что мне делать (что-то делать? необязательно?) –