GithubHelp home page GithubHelp logo

fannt / sztextview Goto Github PK

View Code? Open in Web Editor NEW

This project forked from glaszig/sztextview

0.0 2.0 0.0 118 KB

A drop-in UITextView replacement which gives you: a placeholder.

License: MIT License

Objective-C 91.79% Ruby 8.21%

sztextview's Introduction

SZTextView

Build Status Bitdeli Badge Carthage compatible

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

Your iOS project. (Tested on iOS versions 7.x, 8.0. Should also work on 5.x and 6.x)

Note: This is ARC-enabled code. You'll need Xcode 4.2 and OS X 10.6, at least.
Note: To run the tests you'll need Xcode 5 with XCTest.

Installation

Either clone this repo and add the project to your Xcode workspace, use CocoaPods or Carthage.

CocoaPods

Add this to you Podfile:

	pod 'SZTextView'

Carthage

Add this line to your Cartfile:

	github "glaszig/SZTextView"

Usage

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:

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.

Note

I've developed this component for Cocktailicious. You should check it out *shamelessplug*.
Please let me now if and how you use this component. I'm curious.

sztextview's People

Contributors

glaszig avatar benlachman avatar adrian2112 avatar ahalls avatar junjie avatar tcirwin avatar vlas-voloshin avatar fannt avatar erf avatar yazzpro avatar jasondinh avatar paulz avatar ryanbertrand avatar dark2torch avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.