如何将NSLayoutConstraints应用于元素,使其始终位于元素下方的元素中间?

时间:2016-10-06 16:18:09

标签: ios swift storyboard nslayoutconstraint

在我的故事板中,我有一个MapView伸展到我的屏幕边框。但是有可能显示键盘,然后我更新约束,地图高度缩小。

这是我负责的方法:

func keyboardWillChangeFrame(notification: NSNotification) {
    let endFrame = (notification.userInfo![UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()

    if(isKeyboardShown == true)
    {
        bottomConstraint.constant = CGRectGetHeight(view.bounds) - endFrame.origin.y+49
        self.view.layoutIfNeeded()
        isKeyboardShown = false
    } else {
        bottomConstraint.constant = CGRectGetHeight(view.bounds) - endFrame.origin.y
        self.view.layoutIfNeeded()
        isKeyboardShown = true
    }
}

工作正常。现在我想添加始终以地图为中心的UIImageView,无论键盘是否可见。我认为将图像置于地图的完美中心是足够的。

到目前为止看起来像这样:

enter image description here

我设法以某种方式添加Y轴上的约束:

enter image description here

但是X呢?

我尝试在此处添加:

enter image description here

align选项显示为灰色...

如何添加约束以使图像始终居中,无论地图如何缩小?

1 个答案:

答案 0 :(得分:1)

尝试按Ctrl +从图像视图拖动到地图,然后点击Center Horizontally

您的Top Space to: Top Layout...约束和Align Center Y to: Map View约束也可能存在冲突。听起来你只想要中心Y约束,因为当你的地图增长/缩小你的图像时,如果它在地图上居中,那么它永远不会从顶部变为192.