Reactions

Supported Platforms Version Swift Package Manager Carthage compatible Build status Code coverage status Codebeat badge

Reactions 是一个完全可定制的控件,旨在让人们能够以快速简便的方式分享他们的反应。

Reactions

要求用法安装贡献联系方式许可证

要求

用法

Reaction(反应)

Reaction

Reaction 对象是一个使用以下属性定义的模型

该库已经打包了标准的 Facebook 反应:like(赞)、love(喜欢)、haha(哈哈)、wow(哇)、sad(伤心)和 angry(生气)。当然,您也可以创建自己的反应。

let myReaction = Reaction(id: "id", title: "title", color: .red, icon: UIImage(named: "name")!)

ReactionSelector(反应选择器)

ReactionSelector

ReactionSelector 控件允许人们从列表中选择一个反应

let select       = ReactionSelector()
select.reactions = Reaction.facebook.all

// React to reaction change
select.addTarget(self, action: #selector(reactionDidChanged), for: .valueChanged)

func reactionDidChanged(_ sender: AnyObject) {
  print(select.selectedReaction)
}

// Conforming to the ReactionFeedbackDelegate
select.feedbackDelegate = self

func reactionFeedbackDidChanged(_ feedback: ReactionFeedback?) {
  // .slideFingerAcross, .releaseToCancel, .tapToSelectAReaction
}

该组件可以单独使用(如上所示),也可以与 ReactionButton(稍后讨论)结合使用。您当然可以使用 ReactionSelectorConfig 对象自定义该组件

select.config = ReactionSelectorConfig {
  $0.spacing        = 6
  $0.iconSize       = 40
  $0.stickyReaction = false
}

ReactionButton(反应按钮)

ReactionButton

ReactionButton 提供了一种切换反应的简单方法(例如,赞/取消赞)。也可以附加 ReactionSelector,以便在长按时显示它

let button      = ReactionButton()
button.reaction = Reaction.facebook.like

// To attach a selector
button.reactionSelector = ReactionSelector()

您可以使用 ReactionButtonConfig 对象配置该组件

button.config         = ReactionButtonConfig() {
  $0.iconMarging      = 8
  $0.spacing          = 4
  $0.font             = UIFont(name: "HelveticaNeue", size: 14)
  $0.neutralTintColor = UIColor(red: 0.47, green: 0.47, blue: 0.47, alpha: 1)
  $0.alignment        = .left
}

ReactionSummary(反应摘要)

ReactionSummary

ReactionSummary 是一个控件,它将给定的反应列表显示为一组叠加的唯一图标。您也可以将其链接到文本描述。

let summary       = ReactionSummary()
summary.reactions = Reaction.facebook.all
summary.text      = "You, Chris Lattner, and 16 others"

// As is a control you can also react to the .touchUpInside event
select.addTarget(self, action: #selector(summaryDidTouched), for: .touchUpInside)

ReactionSummary Non Aggregated

您还可以获得每个反应的详细信息。为此,您需要通过将 isAggregated 配置属性设置为 false 来取消组合它们。

summary.config = ReactionSummaryConfig {
  $0.isAggregated = false
}

与其他组件一样,您可以使用 ReactionSummaryConfig 对象进行设置

summary.config = ReactionSummaryConfig {
  $0.spacing      = 8
  $0.iconMarging  = 2
  $0.font         = UIFont(name: "HelveticaNeue", size: 12)
  $0.textColor    = UIColor(red: 0.47, green: 0.47, blue: 0.47, alpha: 1)
  $0.alignment    = .left
  $0.isAggregated = true
}

安装

CocoaPods

如果 CocoaPods 尚未安装,请先安装它

$ [sudo] gem install cocoapods
$ pod setup

转到您的 Xcode 项目目录,创建并编辑您的 Podfile 文件并添加 Reactions

$ cd /path/to/MyProject
$ touch Podfile
$ edit Podfile
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'

use_frameworks!
pod 'Reactions', '~> 3.0.0'

安装到您的项目中

$ pod install

从 .xcworkspace 文件(而不是通常的项目文件)在 Xcode 中打开您的项目

$ open MyProject.xcworkspace

现在您可以将 import Reactions 框架导入到您的文件中了。

Carthage

Carthage 是一个去中心化的依赖管理器,它可以自动执行将框架添加到您的 Cocoa 应用程序的过程。

您可以使用 Homebrew 使用以下命令安装 Carthage

$ brew update
$ brew install carthage

要使用 Carthage 将 Reactions 集成到您的 Xcode 项目中,请在您的 Cartfile 文件中指定它

github "yannickl/Reactions" >= 3.0.0

Swift Package Manager

您可以使用 Swift Package Manager 来安装 Reactions,方法是将正确的描述添加到您的 Package.swift 文件中

import PackageDescription

let package = Package(
    name: "YOUR_PROJECT_NAME",
    targets: [],
    dependencies: [
        .Package(url: "https://github.com/yannickl/Reactions.git", versions: "3.0.0" ..< Version.max)
    ]
)

请注意,Swift Package Manager 仍处于早期设计和开发阶段,有关更多信息,请查看其 GitHub 页面

手动

下载 该项目并将 SourcesResources 文件夹复制到您的项目中以使用它。

贡献

欢迎并鼓励贡献

联系方式

Yannick Loriot

许可证 (MIT)

版权所有 (c) 2016-至今 - Yannick Loriot

特此授予许可,对获得本软件和相关文档文件(“软件”)副本的任何人免费,以不受限制地处理本软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向为此目的提供软件的人员提供软件,但须符合以下条件

上述版权声明和本许可声明应包含在本软件的所有副本或主要部分中。

本软件按“现状”提供,不提供任何形式的明示或暗示的保证,包括但不限于适销性、特定用途的适用性和不侵权的保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权诉讼或其他诉讼中,因本软件或本软件的使用或其他交易而引起、产生或与之相关的责任。