XDXRatingBar 1.2.0

XDXRatingBar 1.2.0

6谢侠6 维护。




  • 6谢侠6

XDXRatingBar

logo

Version Platform Languages GitHub license

目录

简介

GitHub仓库 XDXRatingBar 最初灵感来自于由GitHub用户 saiwu-bigkoo 编写的 iOS-RatingBar,并增强了

  1. 类级别的@IBDesignable和@IBInspectable,以便开发者在Xcode storyboard或xib文件中设置属性并预览UI行为;
  2. XDXRatingBarManager单例类可以帮助开发者全局配置所有XDXRatingBar实例;
  3. 下面将介绍更多的小增强功能。

安装

在iOS项目中安装此API的最简单方法是将其文件XDXRatingBar.swift复制到Xcode项目文件夹。

CocoaPods安装

target '<your_project>' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!
  
  # Pods for <your_project>
  pod 'XDXRatingBar'
end

提示

XDX评价栏 - 变量

  1. 变量 "maxRating" 应该是变量 "numberOfStars" 的倍数。在大多数情况下,我建议将它们设置为相同的值。

  2. 变量 "animated" 表示 XDX评价栏实例在评分改变时是否应该执行动画。如果 "animated" 设置为 false,则 "animationTimeInterval" 的值将无用。

  3. 变量 "isDecimalRating" 表示 XDX评价栏实例的评分是十进制还是整数。

  4. 变量 "isIndicator" 决定了用户是否可以通过点击 XDX评价栏来更改评分。然而,即使设置为 true,评分仍然可以通过编程方式更改。

  5. 变量 "starWidthInsetRatio" 设置星星图像之间的间隔。该值应设置为 0 ~ 0.5。

  6. 变量 "isDisplayingUnselectedStars" 表示是否应显示未选择的星星图像。如果设置为 false,则 "imageForUnselectedStars" 的值将无用(建议设置为 nil)。

XDX评价栏管理器

XDX评价栏管理器是一个包含项目中的所有 XDX评价栏实例的配置单例类的类。让我们看看一个例子

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool 
{
    configXDXRatingBarGlobally()
    return true
}

func configXDXRatingBarGlobally()
{
    XDXRatingBarManager.shared.minRating = 1
    XDXRatingBarManager.shared.maxRating = 5
    XDXRatingBarManager.shared.numberOfStars = 5
    XDXRatingBarManager.shared.animated = true
    XDXRatingBarManager.shared.animationTimeInterval = 0.2
    XDXRatingBarManager.shared.isDecimalRating = false
    XDXRatingBarManager.shared.isIndicator = false
    XDXRatingBarManager.shared.starWidthInsetRatio = 0.05
}

只需复制这段代码,并根据项目需求在 AppDelegate 文件中进行一些修改。因此,每次创建 XDX评价栏时,您无需在代码文件或 xib / storyboard 文件中进行覆盖。XDX评价栏管理器中的所有变量都是可选的,因此您无需在 AppDelegate 中执行此操作。

XDX评价栏代理

如果您需要在 XDX评价栏的评分改变时执行某些操作,您只需在 view-controller 或 view-cell 类中确认该协议,例如

class ViewController: UIViewController, XDXRatingBarDelegate

您可以通过编程设置代理,或者将代理拖入 xib / storyboard 文件中。

第一种方法

@IBOutlet weak var ratingBar: XDXRatingBar! {
    didSet { ratingBar.delegate = self }
}

第二种方法

override func viewDidLoad()
{
    super.viewDidLoad()
        
    ratingBar.delegate = self
}

然后,在 "ratingWillChange" 或 "ratingDidChange" 方法中执行您想要的操作。即使您在类中确认了协议,也不需要实现该方法(因为协议中的方法是可选的)。

func ratingWillChange(_ ratingBar: XDXRatingBar, oldRating: CGFloat, newRating: CGFloat)
{
    print("ratingWillChange oldRating: \(oldRating)")
}

func ratingDidChange(_ ratingBar: XDXRatingBar, oldRating: CGFloat, newRating: CGFloat)
{
    print("ratingDidChange newRating: \(newRating)")
}

简介

该 GitHub 仓库是基于 saiwu-bigkoo 的仓库 iOS-RatingBar 改编并强化之作,相比 iOS-RatingBar 而言,XDXRatingBar 强化了:

  1. @IBDesignable 和 @IBInspectable 可以让开发者设置 XDXRatingBar 的属性并预览 UI 效果;
  2. 为开发者设置全局属性提供了含有单例 shared 的类 XDXRatingBarManager;
  3. 将在使用技巧中介绍更多的加强。

安装说明

将 XDXRatingBar 安装到 iOS 项目中的最简单方式是直接将 XDXRatingBar.swift 复制到 iOS 项目的 Xcode 项目文件夹中。

Cocoapods 安装:

target '<你的项目名>' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks! 

  # Pods for <你的项目名>
  pod 'XDXRatingBar'
end

使用技巧

XDXRatingBar - 变量

  1. 变量 maxRating (最高评分) 必须是变量 numberOfStars(星星数量) 的倍数。建议设置为相等的值。

  2. 变量 animated (显示动画) 声明 XDXRatingBar 实例是否需要在评分变化时显示动画。

  3. 变量 isDecimalRating (小数型评分) 声明 XDXRatingBar 评分是小数还是整数。

  4. 变量 isIndicator (指示器) 表示 iOS 用户是否不能通过点击 XDXRatingBar 来修改评分。即使该变量值为 true,评分仍可通过代码实现来修改。

  5. 变量 starWidthInsetRatio (星星之间宽空隙指数) 可用来设置星星图片间距。变量的值需在 0 ~ 0.5 之间。

  6. 变量 isDisplayingUnselectedStars (显示未选中星星) 声明未选中的星星是否需要显示。如果值为 false 的话,那么 imageForUnselectedStars (未选中星星的图片) 就不会起作用(建议在此将其设置为 nil)。

XDXRatingBarManager

类 XDXRatingBarManager 包含了一个单例来配置项目中所有的 XDXRatingBar 实例。示例代码如下:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool 
{
    configXDXRatingBarGlobally()
    return true
}

func configXDXRatingBarGlobally()
{
    XDXRatingBarManager.shared.minRating = 1
    XDXRatingBarManager.shared.maxRating = 5
    XDXRatingBarManager.shared.numberOfStars = 5
    XDXRatingBarManager.shared.animated = true
    XDXRatingBarManager.shared.animationTimeInterval = 0.2
    XDXRatingBarManager.shared.isDecimalRating = false
    XDXRatingBarManager.shared.isIndicator = false
    XDXRatingBarManager.shared.starWidthInsetRatio = 0.05
}

将以上代码复制到 iOS 项目的 AppDelegate 文件中,并根据需要进行修改。这样就不需要在每次在代码、xib 或 storyboard 文件中重新配置 XDXRatingBar。该类内部都是 optional 变量,所以以上代码不需要出现在 iOS 项目中。

XDXRatingBarDelegate

如果需要在评分有变化时运行一些代码,可以在 view-controller 或 view-cell 的类中确定协议:

class ViewController: UIViewController, XDXRatingBarDelegate

委托可以通过以下代码实现,也可以在 xib/storyboard 文件中配置。

第一种方式

@IBOutlet weak var ratingBar: XDXRatingBar! {
    didSet { ratingBar.delegate = self }
}

第二种方式

override func viewDidLoad()
{
    super.viewDidLoad()
        
    ratingBar.delegate = self
}

最后在 ratingWillChange 或 ratingDidChange 方法中添加代码。这两个方法不是必需的,即使协议已经被类确认。

func ratingWillChange(_ ratingBar: XDXRatingBar, oldRating: CGFloat, newRating: CGFloat)
{
    print("ratingWillChange oldRating: \(oldRating)")
}

func ratingDidChange(_ ratingBar: XDXRatingBar, oldRating: CGFloat, newRating: CGFloat)
{
    print("ratingDidChange newRating: \(newRating)")
}

支持 XDXRatingBar

联系

许可证

XDXRatingBar 在 MIT 许可证下可用。更多信息请参阅 LICENSE 文件。