如何将 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)
在您编辑问题后不再有意义,但如果您的按钮是 IBOutlets,则也没有必要。
这一行:
var buttonFrame = button.frame
只有当按钮是在别处声明的 IBOutlet 时才有意义。
我正在尝试创建一个应用程序,我必须触摸正在向上移动屏幕的 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)
在您编辑问题后不再有意义,但如果您的按钮是 IBOutlets,则也没有必要。
这一行:
var buttonFrame = button.frame
只有当按钮是在别处声明的 IBOutlet 时才有意义。