【发布时间】:2021-06-27 10:51:11
【问题描述】:
我正在使用 UIContextMenuConfiguration 对集合视图单元格进行操作。一切都按预期工作,但是如果我的单元格从笔尖(取消)激活了约束,它会在长按时刷新。
为了演示这个问题,我创建了一个新项目,故事板中有一个collectionView。集合视图中的自定义单元格有一个带有两个约束的标签,一个约束将其固定在单元格的底部(最初处于活动状态),另一个将其对齐在中心(最初禁用)。
这是我的代码,
import UIKit
class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 10
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! CollectionViewCell
cell.configure()
return cell
}
func collectionView(_ collectionView: UICollectionView, contextMenuConfigurationForItemAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? {
return UIContextMenuConfiguration.init(identifier: nil, previewProvider: nil) { (array) -> UIMenu? in
return UIMenu(title: "Hello", image: nil, identifier: nil, options: .destructive, children: [UIAction(title: "Share", image: UIImage(systemName: "tray.and.arrow.up"), identifier: nil) { _ in
print("HelloWorld!")
}])
}
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: 265, height: 128)
}
}
class CollectionViewCell: UICollectionViewCell {
@IBOutlet weak var bottomConstraint: NSLayoutConstraint!
@IBOutlet weak var centerConstraint: NSLayoutConstraint!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
func configure() {
bottomConstraint.isActive = false
centerConstraint.isActive = true
}
}
【问题讨论】:
-
您需要提供更多细节。用你的代码快速测试,我没有看到你得到的结果。
-
哦,谢谢告知,现在信息够了吗?
-
您是否想要在显示上下文菜单时将标签放到底部?
-
不,我不想(我希望它保持在上下文菜单演示之前的状态)但是当显示上下文菜单时,框架似乎隐式地重新激活了我已取消激活的约束出于某种原因。
-
我认为你在用这种方法自找麻烦。在 Storyboard 上设置
.isActive创建的约束通常不是一个好主意。你想要做什么?
标签: ios swift uicollectionview autolayout uicontextmenuconfiguration