Skip to content

An UITextView in Swift. Support auto growing, placeholder and length limit.

License

Notifications You must be signed in to change notification settings

moshegutman/GrowingTextView

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GrowingTextView

Version License Platform Language

Requirements

iOS 8.0 or above

Installation

GrowingTextView is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "GrowingTextView"

or

Copy GrowingTextView.swift into your project.

Usage

let textView = GrowingTextView()
addSubview(textView)

Customization

Parameter Type Description Default
maxLength Int Maximum text length. Exceeded text will be trimmed. 0 means no limit. 0
trimWhiteSpaceWhenEndEditing Bool Trim white space and new line characters when textview did end editing. true
placeHolder String? PlaceHolder text. nil
placeHolderColor UIColor? PlaceHolder text color. nil
placeHolderLeftMargin CGFloat Left margin of PlaceHolder text. 5.0
maxHeight CGFloat Maximum height of textview. 0.0

Examples

textView.maxLength = 140
textView.trimWhiteSpaceWhenEndEditing = false
textView.placeHolder = "Say something..."
textView.placeHolderColor = UIColor(white: 0.8, alpha: 1.0)
textView.maxHeight = 70.0
textView.backgroundColor = UIColor.whiteColor()
textView.layer.cornerRadius = 4.0

Animation

To animate the height change, adopt GrowingTextViewDelegate protocol instead of UITextViewDelegate.

class ViewController: UIViewController, GrowingTextViewDelegate {
...

Implement textViewDidChangeHeight. Call layoutIfNeeded() inside an animation.

func textViewDidChangeHeight(height: CGFloat) {
   UIView.animateWithDuration(0.2) { () -> Void in
       self.textView.layoutIfNeeded()
   }
}

In some cases, you may also need to animate it's superview, e.g. toolbar.

func textViewDidChangeHeight(height: CGFloat) {
   UIView.animateWithDuration(0.2) { () -> Void in
       self.myToolbar.layoutIfNeeded()
   }
}

Author

Kenneth Tsang, kenneth.tsang@me.com

License

GrowingTextView is available under the MIT license. See the LICENSE file for more info.

About

An UITextView in Swift. Support auto growing, placeholder and length limit.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages

  • Swift 71.3%
  • Shell 24.3%
  • Ruby 2.7%
  • Objective-C 1.7%