Swift,iOS - 单击以显示文本字段时按钮向上移动?然后搬回去?

Posted

技术标签:

【中文标题】Swift,iOS - 单击以显示文本字段时按钮向上移动?然后搬回去?【英文标题】:Swift, iOS - have button move up when clicked to display text field? Then move back? 【发布时间】:2016-06-06 21:32:42 【问题描述】:

我知道如何在 sprite kit 之类的东西中实现这一点,但只有一个普通的 ViewController 我有点迷茫 - 现在我在我的 xib 文件上设置了我的按钮和我的 UITextfield。现在,当单击按钮时,我的文本字段从隐藏变为不隐藏,这很棒。

问题是我需要让我的按钮向上滑动(如动画向上)以在单击时“显示”文本字段。如在文本字段中将在按钮下方。单击另一个按钮时,我希望该按钮滑回其原始位置。我不知道如何实现这些动画。

这是我需要的图片:

所以蓝色按钮会在点击时触发向上移动。然后,如果按下另一个按钮,蓝色按钮将移回文本字段上的原始位置。

我怎样才能做到这一点?

【问题讨论】:

会一直是这样的 4 个部分,还是可以有可变数量的部分? 总是 4 - 不可变 【参考方案1】:

如果您没有在 UITableView 中显示这些,可以尝试以下选项:

    将您的 .xib 设置为所有可能的视图都处于“扩展”状态。为将要显示的视图提供高度约束(除了正确布局视图所需的其他视图),然后在视图控制器中为这些高度约束创建一个出口。此外,在视图控制器中存储您希望视图扩展高度的引用。 在视图控制器的viewDidLoad 中,您将那些高度约束的constant 值设置为0。这将导致这些视图有效地消失,并且您的其他视图应该根据它们的约束来填补它们留下的空白.

    当您按下其中一个按钮时,如果您希望它们隐藏,您将通过将其高度约束设置为 0 来更新哪些视图应该可见,或者如果您希望它们显示,则设置为您之前保存的值。高度更新后,调用

    UIView.animateWithDuration(howLongTheAnimationLasts) 
        self.view.layoutIfNeeded()
    
    

    这应该动画高度值的变化。

或者,您可以尝试将您的选项放入UITableView 并使用tableView:heightForRowAtIndexPath: 更改它们的高度,并在它们的高度应该改变时重新加载单元格。

【讨论】:

谢谢,不过我先尝试了另一种方法.. 你看看***.com/questions/37668784/… 我尝试实施您的解决方案 - 我没有广泛使用约束,并且高度约束同时影响按钮和文本字段,导致两者都消失。还有其他想法吗? 您能否提供一个示例,说明如何在不影响所有其他按钮的情况下更改高度限制? 你能截屏一下你是如何为可扩展视图设置约束的吗?具体来说,IB 中的 Size Inspector 面板列出了约束(带有标尺图标的选项卡)。可能是由于您设置约束的方式,当您更改一个视图的高度时,其他视图不知道如何正确调整自己的大小。

以上是关于Swift,iOS - 单击以显示文本字段时按钮向上移动?然后搬回去?的主要内容,如果未能解决你的问题,请参考以下文章

Swift:单击推送通知操作按钮时在文本字段中写入并处理它

当键盘出现Swift时,使用文本字段和按钮向上移动视图

iOS 开发 Swift 自定义 Cells

当我在 swift 中单击单元格中的文本字段时,键盘没有出现

使用 RxSwift 和 RXCocoa 验证按钮单击时的所有文本字段

IOS swift - 如何在点击文本字段时打开新视图控制器后结束文本字段中的编辑