2016-03-04 60 views
0

在我的應用程序中,用戶需要重新設置拍攝對象上的UIView的大小,以便通過按幾次按鈕將它們放在一起,根據重新調整大小的方向。看到這個截圖:Swift:如何通過按下按鈕遞增地重新調整UIView的大小

enter image description here

目前的用戶被要求按「加號」按鈕多次,直到所需的大小,但我想按鈕,只需拿着逐步重新大小的UIView按下按鈕,就好像一個線程已經啓動,例如,每秒都會增加UIView,直到釋放按鈕。我該如何在Swift中做這件事?我應該創建線程(如果是,如何)?我應該使用長按手勢識別器嗎?

回答

3

您可以使用NSTimer創建自定義按鈕來檢測按鈕上的按鈕。我沒有測試它,但我想它可以幫助你:

class CustomButton: UIButton { 

    let updateInterval = 0.1 
    var timer: NSTimer? 
    var isUserPressing = false 
    var updateBlock: (() -> Void)? 

    convenience init() { 
     self.init(frame: CGRect.zero) 
    } 

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
     startTimer() 
    } 

    override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) { 
     stopTimer() 
    } 

    override func touchesCancelled(touches: Set<UITouch>?, withEvent event: UIEvent?) { 
     stopTimer() 
    } 

    private func startTimer() { 
     isUserPressing = true 
     timer = NSTimer(timeInterval: updateInterval, target: self, selector: "timerUpdated", userInfo: nil, repeats: true) 
     NSRunLoop.mainRunLoop().addTimer(self.timer!, forMode: NSDefaultRunLoopMode) 
    } 

    private func stopTimer() { 
     isUserPressing = false 
     timer?.invalidate() 
     timer = nil 
     timerUpdated() // to detect taps 
    } 

    private func timerUpdated() { 
     updateBlock?() 
    } 

} 

你可以使用這樣的:

let button = CustomButton() 
button.updateBlock = { 
    // call your update functions 
} 
+0

酷,我喜歡它。我會馬上開始寫。謝謝! –

+0

很高興聽到 –

+1

**注意:** NSTimer'不會啓動,除非您在 –