2015-12-08 1 views
0

Я пытаюсь сделать приложение, где мне нужно коснуться button, который движется вверх по экрану. Я использую для этого CADisplayLink. Проблема в моем коде заключается в том, что он создает новую кнопку вместо использования определенного:Как использовать 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 
} 

Спасибо. Антон

+0

Ваша кнопка IBOutlet, то есть вы создали ее в построителе интерфейса. Почему тогда инициализируется и добавляется новая кнопка и кнопка, равные ей? – beyowulf

+0

Как я могу это изменить? –

+0

Какую кнопку вы хотите использовать? Тот, который вы создали в построителе интерфейса или тот, который вы создаете программно? – beyowulf

ответ

0

Вы можете удалить

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 объявлена ​​в другом месте.

 Смежные вопросы

  • Нет связанных вопросов^_^