【问题标题】:How to use CADisplayLink for a specific button?如何将 CADisplayLink 用于特定按钮?
【发布时间】:2015-12-08 02:35:36
【问题描述】:

我正在尝试制作一个应用程序,我必须触摸正在向上移动屏幕的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
}

谢谢。 安东

【问题讨论】:

  • 您的按钮是一个 IBOutlet,这意味着您在界面生成器中创建了它。那为什么还要初始化并添加一个新的按钮和按钮相等呢?
  • 我该如何改变?
  • 您想使用哪个按钮?是您在界面生成器中创建的还是您以编程方式创建的?

标签: ios swift button cadisplaylink


【解决方案1】:

你可以删除

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 时才有意义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    相关资源
    最近更新 更多