Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/TomKnig/TOMSMorphingLabel
Configurable morphing transitions between text values of a label.
https://github.com/TomKnig/TOMSMorphingLabel
Last synced: about 1 month ago
JSON representation
Configurable morphing transitions between text values of a label.
- Host: GitHub
- URL: https://github.com/TomKnig/TOMSMorphingLabel
- Owner: tomknig
- License: mit
- Created: 2014-06-18T00:43:14.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2021-08-16T22:41:08.000Z (over 3 years ago)
- Last Synced: 2024-04-24T14:49:46.286Z (8 months ago)
- Language: Objective-C
- Size: 1.45 MB
- Stars: 1,864
- Watchers: 44
- Forks: 104
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-mobile-ui - TomKnig/TOMSMorphingLabel
README
# TOMSMorphingLabel
Configurable morphing transitions between text values of a label.
Triggering the animation is as easy as setting the labels `text` property.## Demo
![Screen1](demo.gif)
## Installation with CocoaPods
TOMSMorphingLabel is available through [CocoaPods](http://cocoapods.org). To install
it, simply add the following line to your Podfile:#### Podfile
```ruby
platform :ios, '7.0'
pod "TOMSMorphingLabel", "~> 0.5"
```## Usage
Instantiate TOMSMorphingLabel as you would do with an UILabel results in a fully working thus morphing label.
```objective-c
TOMSMorphingLabel *label = [[TOMSMorphingLabel alloc] initWithFrame:CGRectMake(0, 42, self.view.frame.size.width, 42)];
[self.view addSubview:label];
```Setting - and particularly changing - the labels text property will automatically morph the labels previous text to the new value.
```objective-c
label.text = @"Swift";
```Setting the labels text property using `setText:withCompletionBlock` will morph the labels as well as triggering the completion block when the animation is finished.
```objective-c
[label setText:@"Swift" withCompletionBlock:^{
NSLog(@"label.text is now 'Swift'");
}];
```Note that the label will execute only one morph transition at a time. If the text value of the label changes during a transition - even if it changes multiple times - the label will invoke a transition to the youngest text value that was set.
## Customization
TOMSMorphingLabel provides the possibility to configure the morphing transitions look and feel.
The configurable properties are defined as follows:configurable properties
animationDuration: CGFloat
Time that elapses between the setting of a new text value and the end of the morphing transition. Default: 0.37
characterAnimationOffset: CGFloat
Spatial propagation speed of the character shrink and alpha effect. Default: 0.25
characterShrinkFactor: CGFloat
Factor that the scale of a completely disappeared character is divided by. Default: 4
morphingEnabled: BOOL
Defines whether the morphing transition between text values is enabled. Default: YES
## Changelog
#### 0.5.1
* made custom configurable properties accessible by Interface Builder#### 0.5.0
* broke a strong reference cycle between `CADisplayLink` and `TOMSMorphingLabel`
* added invokation of the completion block when setting text without animations
* respect the global `[UIView areAnimationsEnabled]` state#### 0.2.5
* fixed a textColor glitch
* introduced `setText:withCompletionBlock:`#### 0.2.3
* fixed a bug that caused a crash when setting text to nil#### 0.2.2
* added property to disable morphing#### 0.2.1
* added support for iOS6#### 0.2.0
* added unicode support#### 0.1.0
* initial version## Contribution & Contributors
I'd love to see your ideas for improving this library!
The best way to contribute is by submitting a pull request or a [new Github issue](https://github.com/TomKnig/TOMSMorphingLabel/issues/new). :octocat:* @andrebraga added support for iOS6 in version 0.2.1
* @stepanhruda added property to disable morphing in version 0.2.2
* @itouch2 fixed a bug that caused a crash when setting text to nil in version 0.2.3
* @waynehartman fixed text color-change glitch in version 0.2.5
* @cyril94440 added `setText:withCompletionBlock:` in version 0.2.5
* @wanderwaltz broke a strong reference cycle between `CADisplayLink` and `TOMSMorphingLabel` in version 0.5.0
* @wanderwaltz added invokation of the completion block when setting text without animations in version 0.5.0
* @wanderwaltz made `TOMSMorphingLabel` respect the global `[UIView areAnimationsEnabled]` state in version 0.5.0
* @fcanas made custom configurable properties accessible by Interface Builder## Author
[Tom König](http://github.com/TomKnig) [@TomKnig](https://twitter.com/TomKnig)
## License
TOMSMorphingLabel is available under the MIT license. See the LICENSE file for more info.