自动布局的 Xcode 故事板问题不允许我移动对象 origin.y 值

Posted

技术标签:

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

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

【问题讨论】:

【参考方案1】:

试试这个:

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

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

    @IBOutlet weak var verticalSpaceConstraint: NSLayoutConstraint!
    

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

    当您需要移动物品时,更改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。非常感谢你。如果我还有问题,我知道该去哪里。

以上是关于自动布局的 Xcode 故事板问题不允许我移动对象 origin.y 值的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode 中重新制作故事板

Xcode 6.3 故事板自动布局约束

我应该在 Xcode 6 中使用自动布局还是更喜欢为所有 iOS 设备使用单独的故事板

iOS 自动布局:如何在 Xcode 故事板中为 iPad 横向和 iPad 纵向设计不同的布局?

iOS 7 XCode 5 故事板布局示例

Xcode 4.5 和 iOS 6.x 中的故事板方向支持?