2015-01-07 3 views
0

Привет, я пытаюсь изменить высоту кнопки, заданной как inputAccessoryView, как только я нажму на нее.Анимировать высоту inputAccessoryView Swift

К сожалению, похоже, что только положение, но не высота.

Может ли кто-нибудь помочь мне? Ниже моего кода.

Спасибо!

import UIKit 

class ViewController: UIViewController, UITextFieldDelegate { 



@IBOutlet var textField: UITextField! 

    var SendButton: UIButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     SendButton.frame = CGRectMake(0, 0, UIScreen.mainScreen().applicationFrame.width, 30) 
     SendButton.backgroundColor = UIColor(red: 184/255.0, green: 56/255.0, blue: 56/255.0, alpha: 1) 
     SendButton.setTitle("Send", forState: .Normal) 
     SendButton.addTarget(self, action: "sendNotification", forControlEvents: UIControlEvents.AllEvents) 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    func sendNotification(){ 

     UIView.animateWithDuration(1, animations: { 
      self.SendButton.frame = CGRectMake(0, -340, UIScreen.mainScreen().applicationFrame.width, 30) 
      self.SendButton.backgroundColor = UIColor(red: 300/255.0, green: 56/255.0, blue: 56/255.0, alpha: 1) 
      self.SendButton.setTitle("Hello", forState: .Normal) 

     }) 
    } 


    func textFieldDidBeginEditing(textField: UITextField) { 
     textField.inputAccessoryView = self.SendButton 
    } 

} 

ответ

1

В вашем блоке анимации вы меняете положение кадра в CGRectMake, а не на высоту. поэтому положение меняется, а не высота.

UIView.animateWithDuration(1, animations: { 
// Your problem is the line below 
     self.SendButton.frame = CGRectMake(0, -340, UIScreen.mainScreen().applicationFrame.width, 30) 
    }) 

функция параметров функции CGRectMake являются
CGRectMake(xPosition, yPosition, width, height)

Изменить код ниже нужной высоты.

UIView.animateWithDuration(1, animations: { 
     self.SendButton.frame = CGRectMake(0, 0, UIScreen.mainScreen().applicationFrame.width, yourDesiredHeight) 
    }) 

Но это не помогает в изменении высоты входного аксессуара после его установки.

Сначала добавьте отдельно UIView в качестве дополнительного устройства (с добавленной высотой) и добавьте кнопку в это UIView. После этого запустите кнопку внутри. Это работает. Вы можете проверить код в тексте
https://gist.github.com/rakeshbs/539827925df923e41afe

+0

Здравствуйте, спасибо за ответ. Но, к сожалению, даже изменение высоты не работает. Высота по-прежнему остается прежней. Вы знаете, почему? Спасибо –

+0

Можете ли вы обновить свой текущий код в вопросе – rakeshbs

+0

Я решил проблему, используя другое представление с добавленной высотой в качестве входного представления и добавив в него кнопку. проверьте код. https://gist.github.com/rakeshbs/539827925df923e41afe – rakeshbs