Skip to content

File browser, file manager UI, browser by list, browser by icon,文件浏览器, 列表样式, 图标样式

License

Notifications You must be signed in to change notification settings

ghostlordstar/SwiftyFileBrowser

Repository files navigation

SwiftyFileBrowser

File browser, file manager UI, browser by list, browser by icon,文件浏览器, 列表样式, 图标样式

CI Status Version License Platform

Screen Shot

Listtype Listtype Listtype

Example

To run the example project, clone the repo, and run pod install from the Example directory first.

Requirements

  • iOS 14.0+
  • Swift 5.0+

Feature

  • show files with list style
  • show files with icon style
  • dynamic switch style
  • reload list with difference algorithm

Installation

Cocoapods

SwiftyFileBrowser is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'SwiftyFileBrowser'

Usage

1. implement SFile protocol

class FileObject: SFile {

    convenience init(id: String, type: SFileType = .folder, name: String?, detail: String?) {
        self.init()
        self.identifier = id
        self.fileName = name
        self.detailText = detail
        self.fileType = type
    }
    
    var identifier: String = ""
    
    var filePath: String?
    
    var fileName: String?
    
    var detailText: String?
    
    var fileType: SFileType = .unknow
    
    var state: SFileState = .downloading(progress: 0.4)
    
    var thumbnail: UIImage?
    
    var appIcon: UIImage?
}

2. add SwiftyFileBrowser to view

    let sfbView = SwiftyFileBrowser.init(frame: UIScreen.main.bounds, type: .list)
        sfbView.delegate = self
        let files = [
            FileObject.init(id: "111", type: .folder, name: "name111434534534534523423535436346awefasdfas", detail: "2021/09/11-asdgsfgfadsfadfadfasdfadfadfadfadf"),
            FileObject.init(id: "222", name: "name222", detail: "2021/09/13"),
            FileObject.init(id: "333", name: "name333", detail: "2021/09/14"),
            FileObject.init(id: "444", type: .unknow, name: "name444", detail: "2021/09/14"),
            FileObject.init(id: "555", name: "name555", detail: "2021/09/15"),
            FileObject.init(id: "666", name: "name666", detail: "2021/09/16")
        ]
        sfbView.reloadBrowser(files: files)
        self.view.addSubview(sfbView!)

3. add UIMenum to longPress gestrue

        
        let copyEle = UIAction.init(title: "Copy", image: nil, identifier: UIAction.Identifier.init("LongPress-Copy"), discoverabilityTitle: nil, attributes: [], state: .off) { act in
            print("LongPress copy event!,index: \(self.sfbView?.longPressIndex)")
            // TODO: copy logic
        }
        
        let moveEle = UIAction.init(title: "Move", image: nil, identifier: UIAction.Identifier.init("LongPress-Move"), discoverabilityTitle: nil, attributes: [], state: .off) { act in
            print("LongPress Move event!,index: \(self.sfbView?.longPressIndex)")
            // TODO: Move logic
        }
        
        self.sfbView?.longPressMenuElements = [copyEle, moveEle]

Author

Hansen, heshanzhang@outlook.com

License

SwiftyFileBrowser is available under the MIT license. See the LICENSE file for more info.

About

File browser, file manager UI, browser by list, browser by icon,文件浏览器, 列表样式, 图标样式

Resources

License

Stars

Watchers

Forks

Packages

No packages published