UICollectionViewCellドラッグプレビューを非表示

ベニーウィジャヤ

を使用してコレクションビューにドラッグアンドドロップを実装しUICollectionViewDragDelegate、ドラッグ中にドラッグプレビューを非表示にしようとしました

このスレッドに従って、このコード行を使用して非表示にすることができますUICollectionViewCellドラッグプレビューのカスタムビュー

public func collectionView(_ collectionView: UICollectionView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -> [UIDragItem] {
        let dragItem = UIDragItem(itemProvider: NSItemProvider())
        dragItem.previewProvider = {
            return nil
        }
}

ただし、ドラッグプレビューは持ち上げられている間も表示され、持ち上げ中にドラッグプレビューを変更できる唯一の方法は

public func collectionView(_ collectionView: UICollectionView, dragPreviewParametersForItemAt indexPath: IndexPath) -> UIDragPreviewParameters? {

        let previewParameters = UIDragPreviewParameters()
        previewParameters.visiblePath = UIBezierPath(roundedRect: CGRect(x: 0, y: 0, width: 50, height: 50), cornerRadius: 0)
        previewParameters.backgroundColor = UIColor.clear
        return previewParameters
    }

ただし、ドラッグプレビューを非表示にせず、背景色を設定することしかできません。

私が試した2番目の方法は、セルの状態を確認することです。

public override func dragStateDidChange(_ dragState: UICollectionViewCell.DragState) {
    switch dragState {

    case .none:
        self.layer.opacity = 1
    case .lifting:
        self.layer.opacity = 0
    case .dragging:
        self.layer.opacity = 1
    }
}

しかし、それも機能していません

これを隠す方法を知っている人はいますか?または少なくとも境界線を非表示にし、影もこの問題を解決できる可能性があります

これが持ち上げられたセルです

ここに画像の説明を入力してください

ベニーウィジャヤ

ついに私は解決策を見つけました、ドラッグプレビューは実際には_UIPlatterView(デバッグ階層の後に)という名前が付けられ、_UIPortalView長押し/持ち上げ中にセルをブロックするという名前の子ビューです

この投稿の解決策として、コレクションビューをサブクラス化し、の子ビューを削除するだけです。 _UIPlatterView

セルがドラッグしているときにUITableViewCellで影を非表示にする方法

public class CustomCollectionView: UICollectionView {

    override public func didAddSubview(_ subview: UIView) {
        super.didAddSubview(subview)

        if "\(type(of: subview))" == "_UIPlatterView" {
            subview.subviews.forEach({ $0.removeFromSuperview() })
        }
    }
}

しかし、それで終わりではありません。上記のソリューションでは、ドラッグプレビューがほんの数秒で表示され、このコードを追加してクリーンアップします。

extension ExampleViewController: UICollectionViewDragDelegate {
    public func collectionView(_ collectionView: UICollectionView, dragPreviewParametersForItemAt indexPath: IndexPath) -> UIDragPreviewParameters? {
        guard let currentCell: MUICalendarCollectionViewCell = collectionView.cellForItem(at: indexPath) as? MUICalendarCollectionViewCell else { return nil }

        let previewParameters = UIDragPreviewParameters()
        let path = UIBezierPath(rect: CGRect.zero)
        previewParameters.visiblePath = path
        previewParameters.backgroundColor = MUIColor.clear
        return previewParameters
    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ドラッグプレビューを非表示-HTMLドラッグアンドドロップ

分類Dev

グリッドビューアイテムテンプレート内でtrtdを非表示にする方法は?

分類Dev

グリッドビュー列を列名で表示/非表示

分類Dev

addThisプラグインを使用してPinterestのピンプレビューポップアップに非表示の画像を表示する

分類Dev

ヘッドレス ビューア - 下部の UI を非表示

分類Dev

Angular:ドラッグアンドドロップマットのプレビューが表示されない

分類Dev

UICollectionViewCellのプレビュー

分類Dev

ドキュメント プレビューを非表示にする方法

分類Dev

カスタムドラッグプレビューでReact DnDを使用してドロップ中に要素を非表示にするにはどうすればよいですか?

分類Dev

Eclipseプラグイン:非推奨のすべてのメソッドを表示するツリービューを作成します

分類Dev

Eclipseプラグイン:非推奨のすべてのメソッドを表示するツリービューを作成します

分類Dev

UICollectionViewCellでビューを非表示にする

分類Dev

プレビューを表示するボタンハンドラ

分類Dev

画像プレビュー付きのドラッグ可能な分割ビュー

分類Dev

VB.netStringBuilderで非表示のグリッドビュー行を回避する

分類Dev

VB.netStringBuilderで非表示のグリッドビュー行を回避する

分類Dev

プログラムでビューを非表示にする方法は?

分類Dev

Swiftuiプログレスビュー非表示

分類Dev

angle2 +の画像プレビューで画像をドラッグアンドドロップします

分類Dev

非表示の列のグリッドビューで垂直線を非表示にする

分類Dev

アンドロイドでウェブビューをロードした後、プログレスバーを非表示にします

分類Dev

プログラムでグリッドビュー列にデータを表示する

分類Dev

UIDragInteractionDelegate:dragInteraction(_:previewForLifting:session :)によって返されるドラッグプレビューに透明なパーツを表示する方法

分類Dev

画像をアップロードしてプレビューを表示

分類Dev

ヘッダーグリッドビューのヘッダーを非表示にする際の問題

分類Dev

ストーリーボード-プログラムでナビゲーションコントローラーのトップバーを非表示にする

分類Dev

denoアップグレードはエラー「モジュールアップグレードを解決できません」を表示します

分類Dev

ドラッグアンドドロップコンポーネントは、AndroidStudioのプレビューには表示されません

分類Dev

Androidでビューをドラッグ

Related 関連記事

  1. 1

    ドラッグプレビューを非表示-HTMLドラッグアンドドロップ

  2. 2

    グリッドビューアイテムテンプレート内でtrtdを非表示にする方法は?

  3. 3

    グリッドビュー列を列名で表示/非表示

  4. 4

    addThisプラグインを使用してPinterestのピンプレビューポップアップに非表示の画像を表示する

  5. 5

    ヘッドレス ビューア - 下部の UI を非表示

  6. 6

    Angular:ドラッグアンドドロップマットのプレビューが表示されない

  7. 7

    UICollectionViewCellのプレビュー

  8. 8

    ドキュメント プレビューを非表示にする方法

  9. 9

    カスタムドラッグプレビューでReact DnDを使用してドロップ中に要素を非表示にするにはどうすればよいですか?

  10. 10

    Eclipseプラグイン:非推奨のすべてのメソッドを表示するツリービューを作成します

  11. 11

    Eclipseプラグイン:非推奨のすべてのメソッドを表示するツリービューを作成します

  12. 12

    UICollectionViewCellでビューを非表示にする

  13. 13

    プレビューを表示するボタンハンドラ

  14. 14

    画像プレビュー付きのドラッグ可能な分割ビュー

  15. 15

    VB.netStringBuilderで非表示のグリッドビュー行を回避する

  16. 16

    VB.netStringBuilderで非表示のグリッドビュー行を回避する

  17. 17

    プログラムでビューを非表示にする方法は?

  18. 18

    Swiftuiプログレスビュー非表示

  19. 19

    angle2 +の画像プレビューで画像をドラッグアンドドロップします

  20. 20

    非表示の列のグリッドビューで垂直線を非表示にする

  21. 21

    アンドロイドでウェブビューをロードした後、プログレスバーを非表示にします

  22. 22

    プログラムでグリッドビュー列にデータを表示する

  23. 23

    UIDragInteractionDelegate:dragInteraction(_:previewForLifting:session :)によって返されるドラッグプレビューに透明なパーツを表示する方法

  24. 24

    画像をアップロードしてプレビューを表示

  25. 25

    ヘッダーグリッドビューのヘッダーを非表示にする際の問題

  26. 26

    ストーリーボード-プログラムでナビゲーションコントローラーのトップバーを非表示にする

  27. 27

    denoアップグレードはエラー「モジュールアップグレードを解決できません」を表示します

  28. 28

    ドラッグアンドドロップコンポーネントは、AndroidStudioのプレビューには表示されません

  29. 29

    Androidでビューをドラッグ

ホットタグ

アーカイブ