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

Posted

技术标签:

【中文标题】上下文菜单选择颜色和框架大小 Swift 5 iOS 13【英文标题】:Context Menu selection color and frame size Swift 5 iOS 13 【发布时间】:2020-01-30 03:56:54 【问题描述】:

我正在尝试通过新的 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

【问题讨论】:

如果要自定义默认预览,则必须在 UIContextMenuConfiguration(identifier: nil, previewProvider: nil) 中提供 previewProvider。另一方面,UICollectionViewCell 的选择颜色也是可自定义的。 【参考方案1】:

我今天遇到了同样的难题,我找到了一个对我有用的解决方案,所以我希望它也对你有用。

我在这篇文章中找到了解决方案:https://kylebashour.com/posts/context-menu-guide

如果您向下滚动到该部分:UITargetedPreview,则有一个 UITableView 的示例,但是您可以为 UICollectionView 应用相同的解决方案:)

【讨论】:

【参考方案2】:

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

假设您的 viewcontrollers/collectionview backgroundcolor = black,在自定义 collectionviewcell 类中的示例:

override var isHighlighted: Bool 
    didSet 
        backgroundColor = .black
    

【讨论】:

你应该提供一些代码来改进你的答案。

以上是关于上下文菜单选择颜色和框架大小 Swift 5 iOS 13的主要内容,如果未能解决你的问题,请参考以下文章

C语言中如何改变字体大小和颜色?

C语言中如何改变字体大小和颜色?

Swift UI笔记

相同的上下文菜单以不同的顺序显示 Xcode 12. Swift 5

所选 UIButton iOS 的区域

怎么调整xshell的文字大小和颜色