animationinputAccessoryView Swift的高度

你好我试图改变一个button设置为inputAccessoryView一旦我点击它的高度。

不幸的是,似乎只能改变位置,而不是高度。

谁能帮我吗? 在我的代码下面。

谢谢!

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 } } 

在你的animation块中,你正在改变CGRectMake框架的y位置而不是高度。 这就是为什么职位正在变化,而不是高度。

  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) }) 

但是这并没有帮助改变input附件的高度。

首先添加一个单独的UIView作为input附件(添加高度)并添加button到这个UIView 。 之后在里面animationbutton。 这工作。 你可以查看代码的要点
https://gist.github.com/rakeshbs/539827925df923e41afe