【问题标题】:Xcode storyboard issue with auto layout not allowing me to move an objects origin.y value自动布局的 Xcode 故事板问题不允许我移动对象 origin.y 值
【发布时间】:2014-11-18 01:04:57
【问题描述】:

在我的storyboard 中,我刚刚实现了大小类,它为我的元素添加了完美的约束,但是当尝试修改元素 y 位置的位置以在键盘显示事件上将其向上移动以使其看起来附加到键盘时像this 一样,由于约束,元素根本不会移动。我试过删除约束,但没有帮助。根据我对它的理解,如果没有约束,则在构建应用程序时会生成一些约束。可以在这里看到我过去如何以编程方式移动元素:i.imgur.com/uHfgEKl.png。我在问如何在启用大小类的情况下将情节提要上的元素 y 位置与键盘的大小一起向上移动?如果有人知道怎么做,请告诉我。 抱歉最后一个链接没有超链接,我没有声誉,因为我是堆栈溢出的新手。

【问题讨论】:

    标签: ios swift autolayout constraints xcode-storyboard


    【解决方案1】:

    试试这个:

    1. 为您的项目添加一个垂直空间约束,并将其固定在距屏幕底部恒定距离的位置。在 Interface Builder 中,将您的项目放在屏幕底部附近,选择它,然后选择 Auto Layout Pin 图标 |-[]-| 并打开底部支撑。将常量设置为所需的初始值。点击添加1个约束

    2. @IBOutlet 添加到代码中的约束中。

      @IBOutlet weak var verticalSpaceConstraint: NSLayoutConstraint!
      

      您可以通过 ControlDocument Layout View 中的约束拖动到您的 ViewController 代码来完成此操作。

    3. 当您需要移动物品时,更改constant

      // Move my item up 100 points
      verticalSpaceConstraint.constant += 100
      

    如果要对约束更改进行动画处理:

        self.view.layoutIfNeeded()
        verticalSpaceConstraint.constant += 100
        UIView.animateWithDuration(2.0) {
            self.view.layoutIfNeeded()
        }
    

    【讨论】:

    • 非常感谢它正在工作,除了一件事,当我之前使用的代码执行时,它转换为新的 y。现在使用您建议的新代码,它会直接捕捉到新值。有没有办法添加过渡效果,或者我应该使用 for() 语句并将其逐个递增到值,使其看起来像过渡?
    • 你真的很擅长 Swift。非常感谢你。如果我还有问题,我知道该去哪里。
    猜你喜欢
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多