SnackView 1.1.0

SnackView 1.1.0

Luca Casula 维护。



SnackView 1.1.0

  • Luca

SnackView logo

SnackView

一种简单的方式来展示可定制的下半部分警告框。 SnackView logo

CocoaPods Compatible Carthage Compatible Platform License Downloads Twitter

Maintainability Test Coverage

更新内容

1.0.9 版本的更新内容

SnackView DataSource

  • 引入了新的 SnackViewDataSource 协议,可用于创建 SnackView。SnackView NewItem

  • 引入了新的 SVImageViewItem 类,可用于显示图片。

  • 目前尚不支持深色模式,SnackView 继续显示浅色界面。

  • 与新的 UIWindowSceneDelegate 系统兼容。

1.0.8 新增功能

  • 修复了当 SnackView 使用空白的 SVItem 数组初始化时发生的崩溃问题。

安装

CocoaPods

CocoaPods 是一个用于 Objective-C 的依赖管理器,它自动化并简化了在使用 SnackView 等第三方库的项目中的过程。您可以使用以下命令安装它

$ gem install cocoapods

构建 1.0.8+ 的 SnackView 需要 CocoaPods 1.0.1+(以及 Swift 3 和 Xcode 9)。

Podfile

  • Swift 3.x: >= 1.0.1 下载地址。要将 SnackView 集成到您的 Xcode 项目中使用 CocoaPods,请在您的 Podfile 中指定它
use_frameworks!
pod 'SnackView', '~> 1.0.9'

然后,运行以下命令

$ pod install

Carthage

Carthage 是一个去中心化依赖管理器,它会为您构建依赖并提供二进制框架。要使用 Carthage 将 SnackView 集成到您的 Xcode 项目中,请在您的 Cartfile 中指定它

github "lucacasula91/SnackView"

SnackView 1.0.9 尚未可在 Carthage 上使用。

手动安装

如果您想手动安装 SnackView,只需将 SnackView Library 文件夹拖入您的项目。

使用说明

创建自定义的 SnackView 弹窗界面

SnackView 内置了一些默认的 UI 元素,如按钮、标签等复杂 UI。第一步是创建一个 SVItem 数组。SVItem 是 SnackView 中包含的所有元素的类。

以下是一个简单的 SnackView 弹窗示例

class MyCustomClass: UIViewController {

    override func viewDidLoad() {  }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

        // Present the SnackView
        let dataSource = self
        SnackView(with: dataSource).show()
    }
}

// MARK: - SnackViewDataSource Section
extension MyCustomClass: SnackViewDataSource {

    func titleFor(snackView: SnackView) -> String {
        return "What's New"
    }

    func cancelTitleFor(snackView: SnackView) -> String? {
        return "Dismiss"
    }

    func itemsFor(snackView: SnackView) -> [SVItem] {
        let descriptionItem = SVDescriptionItem(withDescription: "In this last release of SnackView we...")
        let imageItem = SVImageViewItem(withImage: UIImage(named: "hat_is_new")!,
                                        andContentMode: .scaleAspectFill)

        return [descriptionItem, imageItem]
    }
}

废弃的方法

SnackView 1.0.9 版本中,当前方法现已废弃

  • init(withTitleOptions: andItems:)
  • init(withTitle: andCloseButtonTitle: andItems:)

SnackViewDataSource 包含了您需要处理标题、取消按钮标题和要显示的项目。更多信息请在 SnackViewDataSource 协议文档代码中查看。

  • func insert(item: atIndex:)
  • func remove(item:)
  • func removeItemAt(index:)
  • func updateWith(items:)

请开始使用新的 SnackViewDataSource,所有上述操作都可以通过简单修改 SnackViewDataSource 的 func itemsFor(snackView:) 方法中的返回内容来执行,并调用 reloadData() 函数以执行更新。


支持的 SVItems

SnackView 提供了一些可立即使用的 SVItems,以下是可以使用的 SVItems 列表

SVApplicationItem

SVApplicationItem(withIcon: UIImage(named: "AppIcon"),
                 withTitle: "Ipsum lorem", 
            andDescription: "Lorem ipsum dolor sit amet...")

SnackView alert


SVDescriptionItem

SVDescriptionItem(withDescription: "Lorem ipsum dolor sit amet...")

SnackView alert


SVTextFieldItem

SVTextFieldItem(withPlaceholder: "Create Password", 
                  isSecureField: true)

SnackView alert


SVDetailTextItem

SVDetailTextItem(withTitle: "Elit amet", 
                andContent: "Lorem ipsum dolor sit amet...")

SnackView alert


SVButtonItem

SVButtonItem(withTitle: "Continue") { /* Button action here */ }

SnackView alert


SVSwitchItem

SVSwitchItem(withTitle: "Push Notifications", 
            andContent: "Activate to stay up to date...") { (isOn) in  /* Switch action here */ }

SnackView alert


SVLoaderItem

SVLoadingItem(withSize: .large, 
               andText: "Lorem ipsum dolor sit amet...")

SnackView alert Item


SVImaveViewItem

SVImageViewItem(with: UIImage(named: "hat_is_new")!,
                              andContentMode: .scaleAspectFill)

SnackView alert Item


创建自定义 SVItems

您可以通过继承 SVItem 类创建自定义项目。

下面是一个例子。

import UIKit
import SnackView

//Create a subclass of SVItem
class SVCustomItem: SVItem {
    
    //Pass all parameters in init method to customize your SVItem
    init(withColor color: UIColor) {
        super.init()
        
        //Add an UIView
        let customView = UIView()
        customView.translatesAutoresizingMaskIntoConstraints = false
        customView.backgroundColor = color
        self.addSubview(customView)
       
        //Add UIView contraints
         let vConstraints = NSLayoutConstraint.constraints(withVisualFormat: "V:|-[customView(70)]-|", options: [], metrics: nil, views: ["customView":customView])
        
        let hConstraints = NSLayoutConstraint.constraints(withVisualFormat: "H:|-[customView]-|", options: [], metrics: nil, views: ["customView": customView])
        
        self.addConstraints(vConstraints + hConstraints)
    }
    
    required public convenience init?(coder aDecoder: NSCoder) {
        self.init(coder: aDecoder)
    }
}

Custom SVItem


贡献

如果您想为使 SnackView 成为更好的框架做出贡献,请提交一个 pull request

请考虑以下原因,提交一个 issue

  • 如果您有疑问或需要使用 SnackView 的帮助
  • 如果您发现了一个错误
  • 如果您有一些功能请求