我正在使用swift在Xcode中创建自定义键盘。一切都运行良好,但我遇到了约束问题。我解释一下我做了什么以及我想做什么。
我所做的:1)我创造了一个世界'将在iOS默认键盘和自定义键盘之间切换的按钮。它被限制在视图的左下角,无论它装载到什么设备(iPhone 5,6,7 iPad等)。 2)然后我创建了一个集合视图,无论设备如何,该视图都被限制为从世界按钮的边缘开始。 3)我创建了一个删除按钮,该按钮被限制在视图的右下角,无论设备如何。
我想做的事情:1)我希望集合视图从世界按钮开始,并在删除按钮结束,无论设备如何。
我遇到的麻烦是删除按钮与较小设备上的集合视图重叠。我希望集合视图停在删除按钮但无法弄清楚为什么我的约束不起作用。
这些是集合视图的相关约束。
// create the constraints
// leading constraint
let categoriesCollectionViewLeadingConstraint = NSLayoutConstraint(item: categoriesCollectionView, attribute: NSLayoutAttribute.leading, relatedBy: NSLayoutRelation.equal, toItem: backButton, attribute: NSLayoutAttribute.trailing, multiplier: 1, constant: 0)
// add the leading constraint
view.addConstraint(categoriesCollectionViewLeadingConstraint)
// bottom constraint
let categoriesCollectionViewBottomConstraint = NSLayoutConstraint(item: categoriesCollectionView, attribute: NSLayoutAttribute.bottom, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.bottom, multiplier: 1, constant: 0)
// add the bottom constraint
view.addConstraint(categoriesCollectionViewBottomConstraint)
// trailing constraint
let categoriesCollectionViewTrailingConstraint = NSLayoutConstraint(item: categoriesCollectionView, attribute: NSLayoutAttribute.trailing, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.trailing, multiplier: 1, constant: 0)
// set the priority to less than 1000 so it works correctly
categoriesCollectionViewTrailingConstraint.priority = 999
// add the trailing constraint
view.addConstraint(categoriesCollectionViewTrailingConstraint)
答案 0 :(得分:1)
我认为你应该像这样限制你的集合视图:
// trailing constraint
let categoriesCollectionViewTrailingConstraint = NSLayoutConstraint(item: categoriesCollectionView, attribute: NSLayoutAttribute.trailing, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.trailing, multiplier: 1, constant: - deleteButtonWidth)