SkillAgentSearch skills...

GrowingTextView

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

Install / Use

/learn @KennethTsang/GrowingTextView
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

GrowingTextView

Version License Platform Language Language Language Language

<img src="DEMO.gif" border=1 style="border-color:#eeeeee">

Requirements

iOS 8.0 or above

Installation

CocoaPods

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

Swift 5.0<br>

pod 'GrowingTextView', '0.7.2'

Swift 4.2<br>

pod 'GrowingTextView', '0.6.1'

Swift 4.1<br>

pod 'GrowingTextView', '~> 0.5'

Swift 3<br>

pod 'GrowingTextView', '~> 0.4'

Swift 2.3 (Stopped update since Sep 2016)<br>

pod 'GrowingTextView', :git => 'https://github.com/KennethTsang/GrowingTextView.git', :branch => 'swift2'

Carthage

GrowingTextView is also available through Carthage. To install it, add the following line to your Cartfile:

Swift 5.0<br>

github "KennethTsang/GrowingTextView" ~> 0.7

Swift 4.2<br>

github "KennethTsang/GrowingTextView" ~> 0.6

Swift 4.1<br>

github "KennethTsang/GrowingTextView" ~> 0.5

Swift 3<br>

github "KennethTsang/GrowingTextView" ~> 0.4

Swift 2.3 (Stopped update since Sep 2016)<br>

github "KennethTsang/GrowingTextView" "swift2"

Manually

Copy GrowingTextView.swift into your project.

Usage

Example<br>

GrowingTextview is just a textview, download the example to see how to use it as a input toolbar like other instant messaging apps.

Using GrowingTextview programmatically<br>

let textView = GrowingTextView()
textView.delegate = self
addSubview(textView)

Using GrowingTextview in Storyboard<br>

  1. Drag a TextView into Storyboard.
  2. Set class to "GrowingTextView".
  3. Set delegate to it's view controller.
automaticallyAdjustsScrollViewInsets<br>

Sometime the view controller may incorrectly adjust the inset of textview automatically. To avoid this, set automaticallyAdjustsScrollViewInsets to false

override func viewDidLoad() {
	super.viewDidLoad()
	automaticallyAdjustsScrollViewInsets = false
}

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. | UIColor(white: 0.8, alpha: 1.0) | | attributedPlaceholder | NSAttributedString? | Attributed Placeholder text. | nil | | minHeight | CGFloat | Minimum height of textview. | 0.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.minHeight = 25.0
textView.maxHeight = 70.0
textView.backgroundColor = UIColor.whiteColor()
textView.layer.cornerRadius = 4.0

Animation

  1. Adopt GrowingTextViewDelegate instead of UITextViewDelegate.
  2. Implement textViewDidChangeHeight.
  3. Call layoutIfNeeded() on superview inside the animation.
class ViewController: UIViewController, GrowingTextViewDelegate {
	func textViewDidChangeHeight(_ textView: GrowingTextView, height: CGFloat) {
	   UIView.animate(withDuration: 0.2) {
	       self.view.layoutIfNeeded()
	   }
	}
}

Delegate

GrowingTextViewDelegate is inherited from UITextViewDelegate. You may use it's delegate function as a normal UITextView.

class ViewController: UIViewController, GrowingTextViewDelegate {
    func textViewDidChange(_ textView: UITextView) {
    	...
    }
    func textViewDidEndEditing(_ textView: UITextView) {
    	...
    }
}

Check out UITextViewDelegate here: https://developer.apple.com/reference/uikit/uitextviewdelegate

Author

Kenneth Tsang, kenneth.tsang@me.com

License

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

Related Skills

View on GitHub
GitHub Stars1.1k
CategoryCustomer
Updated20d ago
Forks133

Languages

Swift

Security Score

100/100

Audited on Mar 17, 2026

No findings