Skip to content

Commit

Permalink
Merge pull request #58 from ghostlordstar/master
Browse files Browse the repository at this point in the history
[GL][添加][中文教程]/[GL][add][Chinese tutorial]
  • Loading branch information
dataxpress authored Feb 6, 2018
2 parents a1d8d89 + b1f09ce commit 4193611
Showing 1 changed file with 107 additions and 0 deletions.
107 changes: 107 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,110 @@ Ease Out starts out fast and slows down as it gets to the destination value.

### `UILabelCountingMethodEaseInOut` #####
Ease In/Out starts out slow, speeds up towards the middle, and then slows down as it approaches the destination. It is a nice, smooth curve that looks great, and is the default method.

----
# 以下是中文教程
-----
`UILabel` 添加计数动画支持.

![alt text](https://github.com/dataxpress/UICountingLabel/blob/master/demo.gif "demo")

## CocoaPods ######
UICountingLabel 可以使用cocoaPods导入,
添加以下代码到你的Podfile文件:

`pod 'UICountingLabel'`

然后运行以下命令:

`$ pod install`

## 设置 ######
初始化 `UICountingLabel` 的方式和普通的 `UILabel`是一样的:

UICountingLabel* myLabel = [[UICountingLabel alloc] initWithFrame:CGRectMake(10, 10, 100, 40)];
[self.view addSubview:myLabel];

你也可以用在 XIB 文件中, 前提是你在头文件中引入了 `UICountingLabel`的头文件并且使用 `UICountingLabel`替换掉了原生的`UILabel`.

## 使用方式 #####

设置标签格式. 设置标签格式后,标签会在更新数值的时候以你设置的方式填充,默认是显示float类型的数值,也可以设置成显示int类型的数值,比如下面的代码:

myLabel.format = @"%d";

另外,你也可以使用 `UICountingLabelFormatBlock`, 这个可以对显示的文本格式进行更加高度的自定义:

// 举例:把显示的月份数变成几年零几个月的样式
myLabel.formatBlock = ^NSString* (CGFloat value) {
NSInteger years = value / 12;
NSInteger months = (NSInteger)value % 12;
if (years == 0) {
return [NSString stringWithFormat: @"%ld months", (long)months];
}
else {
return [NSString stringWithFormat: @"%ld years, %ld months", (long)years, (long)months];
}
};

除此之外还有一个 `UICountingLabelAttributedFormatBlock` 用于设置属性字符串的格式,用法和上面的block类似. 如果指定了以上两个 `formatBlock`中的任意一个 , 它将会覆盖掉 `format`属性,因为block的优先级更高.

可选项, 设置动画样式. 默认的动画样式是 `UILabelCountingMethodEaseInOut`, 这个样式是开始时速度比较慢,然后加速,将要结束时减速. 以下将介绍其他动画样式及用法.

myLabel.method = UILabelCountingMethodLinear; // 线性变化

需要计数时只需要使用以下方法即可:

[myLabel countFrom:50 to:100];

可以指定动画的时长,默认时长是2.0秒.

[myLabel countFrom:50 to:100 withDuration:5.0f];

另外也可以使用 `animationDuration` 属性去设置动画时长.

myLabel.animationDuration = 1.0;

可以使用便利方法计数,例如:

[myLabel countFromCurrentValueTo:100];
[myLabel countFromZeroTo:100];

本质上,这些便利方法都是基于一个总方法封装的, 以下就是这个方法完整的声明:

[myLabel countFrom:(float)startValue
to:(float)endValue
withDuration:(NSTimeInterval)duration];

可以使用 `-currentValue` 方法获得当前数据, (即使在动画过程中也可以正常获得):

CGFloat currentValue = [myLabel currentValue];

可以使用 `completionBlock` 获得动画结束的事件:

myLabel.completionBlock = ^{
NSLog(@"finished counting");
};

## 格式 #####

当设置`format`属性后, 标签会检测是否有`%(.*)d`或者`%(.*)i`格式, 如果能找到, 就会将内容以`int`类型展示. 否则, 将会使用默认的`float`类型展示.

假如你需要以`float`类型展示, 最好设置小数点位数限制, 例如使用`@"%.1f"`来限制只显示一位小数.

因为使用了标准的`stringWithFormat:`方法, 可以按照自己的意愿自定义格式,例如:`@"Points: %i"`.

## 动画类型 #####
当前有四种技术动画样式.

### `UILabelCountingMethodLinear` #####
匀速计数动画.

### `UILabelCountingMethodEaseIn` #####
开始比较缓慢,快结束时加速,结束时突然停止.

### `UILabelCountingMethodEaseOut` #####
开始速度很快,快结束时变得缓慢.

### `UILabelCountingMethodEaseInOut` #####
开始时比较缓慢,中间加速,快结束时减速.动画速度是一个平滑的曲线,是默认采用的动画样式。

0 comments on commit 4193611

Please sign in to comment.