上下文菜单选择颜色和帧大小Swift 5 iOS 13

上下文菜单选择颜色和帧大小Swift 5 iOS 13,ios,swift,iphone,uicollectionview,ios13,Ios,Swift,Iphone,Uicollectionview,Ios13,我正试图通过新的iOS 13上下文菜单为我的应用程序实现一个简单的报告/阻止功能。它似乎工作良好,但是,我面临的问题,它的外观,我无法解决目前的问题 当我长按一个UICollectionViewCell时,它会在黑暗模式下高亮显示黑色,这看起来很糟糕,因为我没有全部的黑色背景色。如何将其更改为清晰的颜色或我想要的颜色 我有一个显示用户消息的气泡,我想使用气泡的上下文菜单。问题是,默认情况下,当上下文菜单预览我的单元格时,它会裁剪气泡的底部,看起来只是整个消息的一部分。我试着利用细胞的高度和其他一

我正试图通过新的iOS 13上下文菜单为我的应用程序实现一个简单的报告/阻止功能。它似乎工作良好,但是,我面临的问题,它的外观,我无法解决目前的问题

  • 当我长按一个
    UICollectionViewCell
    时,它会在黑暗模式下高亮显示黑色,这看起来很糟糕,因为我没有全部的黑色背景色。如何将其更改为清晰的颜色或我想要的颜色
  • 我有一个显示用户消息的气泡,我想使用气泡的上下文菜单。问题是,默认情况下,当上下文菜单预览我的单元格时,它会裁剪气泡的底部,看起来只是整个消息的一部分。我试着利用细胞的高度和其他一些参数——什么都不起作用 如何解决这些问题?请帮忙

    ****我的代码是:****

    @available(iOS 13.0, *)
    
    override func collectionView(_ collectionView: UICollectionView, contextMenuConfigurationForItemAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? {
    
        let configuration = UIContextMenuConfiguration(identifier: nil, previewProvider: nil){ action in
    
                let cell = collectionView.cellForItem(at: IndexPath.init(row: indexPath.row, section: 0)) as? ChatCell
    
            cell?.tintColor = .clear
    
            self.view.backgroundColor = .clear
    
    
               let messageText = cell?.textView.text
    
                let userNameZdes = cell?.nameView.text
    
                let report = UIAction(title: "Report", image: UIImage(systemName: "exclamationmark.bubble"), identifier: UIAction.Identifier(rawValue: "report")) {_ in
                    print("report clicked..")
    
                    if (cell?.textView.text.count)! > 2 {
    
                         print("the text of the message = \(messageText!) & the user is \(userNameZdes!)")
    
                    } else {
    
                        print("the user has attached a bad pic")
                    }
    
                }
    
                let block = UIAction(title: "Block user", image: UIImage(systemName: "person.crop.circle.badge.xmark"), identifier: UIAction.Identifier(rawValue: "block"), attributes: .destructive) {_ in
                    print("block clicked..")
                }
                return UIMenu(title: "Message Actions", image: nil, identifier: nil, children: [report, block])
            }
            return configuration
    }
    

    我今天遇到了同样的困难,我找到了一个对我有效的解决方案,所以我希望它也与你相关

    我在这篇文章中找到了解决方案:


    如果向下滚动到以下部分:
    UITargetedPreview
    ,这里有一个例子说明了
    UITableView
    ,但是您可以对UICollectionView应用相同的解决方案:)

    也有同样的问题。我通过覆盖UICollectionViewCell isHighlighted属性修复了它。当didSet->背景色与viewcontrollers背景色相同时,您就完成了

    因此,假设在自定义collectionviewcell类中使用ViewController/collectionview backgroundcolor=black,示例如下:

    override var isHighlighted: Bool {
        didSet {
            backgroundColor = .black
        }
    }
    

    如果要自定义默认预览,必须在UIContextMenuConfiguration(标识符:nil,previewProvider:nil)中提供previewProvider。另一方面,UICollectionViewCell的选择颜色也是可自定义的。您应该提供一些代码来改进您的答案。