https://github.com/glaszig/sztextview
A drop-in UITextView replacement which gives you: a placeholder.
https://github.com/glaszig/sztextview
objective-c
Last synced: about 1 year ago
JSON representation
A drop-in UITextView replacement which gives you: a placeholder.
- Host: GitHub
- URL: https://github.com/glaszig/sztextview
- Owner: glaszig
- License: mit
- Created: 2013-03-14T15:12:43.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2024-04-22T21:51:10.000Z (about 2 years ago)
- Last Synced: 2025-04-01T09:33:47.294Z (about 1 year ago)
- Topics: objective-c
- Language: Objective-C
- Size: 147 KB
- Stars: 686
- Watchers: 19
- Forks: 102
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# SZTextView
[](https://github.com/Carthage/Carthage)
A drop-in UITextView replacement which gives you: a placeholder.
Technically it differs from other solutions in that it tries to work like UITextField's private `_placeholderLabel` so you should not suffer ugly glitches like jumping text views or loads of custom drawing code.
## Requirements
An iOS project.
## Installation
Either clone this repo and add the project to your Xcode workspace, use [CocoaPods](http://cocoapods.org) or [Carthage](https://github.com/Carthage/Carthage).
#### CocoaPods
Add this to you Podfile:
```ruby
pod 'SZTextView'
```
#### Carthage
Add this line to your Cartfile:
```
github "glaszig/SZTextView"
```
## Usage
```objc
SZTextView *textView = [SZTextView new];
textView.placeholder = @"Enter lorem ipsum here";
textView.placeholderTextColor = [UIColor lightGrayColor];
textView.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:18.0];
```
Analogously you can use the `attributedPlaceholder` property to set a fancy `NSAttributedString` as the placeholder:
```objc
NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:@"Enter lorem ipsum here"];
[placeholder addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0,2)];
[placeholder addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(2,4)];
[placeholder addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(6,4)];
textView.attributedPlaceholder = placeholder;
```
Both properties `placeholder` and `attributedPlaceholder` are made to stay in sync.
If you set an `attributedPlaceholder` and afterwards set `placeholder` to something else, the set text gets copied to the `attributedPlaceholder` while trying to keep the original text attributes.
Also, `placeholder` will be set to `attributedPlaceholder.string` when using the `attributedPlaceholder` setter.
A simple demo and a few unit tests are included.
### Animation
The placeholder is animatable. Just configure the `double` property `fadeTime`
to the seconds you'd like the animation to take.
### User Defined Runtime Attributes
If you prefer using Interface Builder to configure your UI, you can use UDRA's to set values for `placeholder` and `placeholderTextColor`.
## Contributing
1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Added some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request
# License
Published under the [MIT license](http://opensource.org/licenses/MIT).
**Note**
I've developed this component for [Cocktailicious](http://www.cocktailiciousapp.com). You should check it out \*shamelessplug\*.
Please let me now if and how you use this component. I'm curious.