簡體   English   中英

如何將CADisplayLink用於特定按鈕?

[英]How to use CADisplayLink for a specific button?

我正在嘗試制作一個應用程序,其中我必須觸摸向上移動屏幕的button 我為此使用CADisplayLink 我的代碼中的問題是它創建了一個新按鈕,而不是使用特定按鈕:

@IBOutlet var label: UILabel!
@IBOutlet var button2: UIButton!
@IBAction func button1(sender: UIButton) {
    label.hidden = true
    button2 = UIButton(type: UIButtonType.System) as UIButton
    button2.frame = CGRectMake(120, 400, 100, 100)
    button2.setTitle("Test Button", forState: UIControlState.Normal)
    button2.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside)
    self.view.addSubview(button)
    let displayLink = CADisplayLink(target: self, selector: "handleDisplayLink:")
    displayLink.addToRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)
}
func handleDisplayLink(displayLink: CADisplayLink) {
    var buttonFrame = button.frame
    buttonFrame.origin.y += -2
    button2.frame = buttonFrame
    if button2.frame.origin.y <= 50 {
        displayLink.invalidate()   
    }
}
func buttonAction(sender: UIButton) {
    sender.alpha = 0
    label.hidden = false
}
override func viewDidLoad() {
    super.viewDidLoad()
  label.hidden = true
}

謝謝。 安東

您可以刪除

button2 = UIButton(type: UIButtonType.System) as UIButton
button2.frame = CGRectMake(120, 400, 100, 100)
button2.setTitle("Test Button", forState: UIControlState.Normal)

只需在Interface Builder中設置這些屬性。

也是這一行:

 self.view.addSubview(button)

編輯問題后,這不再有意義,但是如果您的按鈕是IBOutlet,也沒有必要。

這行:

var buttonFrame = button.frame

僅當button是在其他位置聲明的IBOutlet時才有意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM