Skip to content

Latest commit

 

History

History
130 lines (85 loc) · 3.86 KB

README.md

File metadata and controls

130 lines (85 loc) · 3.86 KB

AnyFormatKit: Simple text formatting in Swift

CI Status Version Carthage Compatible License Platform Swift

Text formatting framework written on Swift 4.0.

Features

Features
🎭 Convert string into formatted string and vice versa
🚴 Formatting text during typing
#️⃣ Set format using '#' characters like '### ##-###'

Example

To run the example project, clone the repo and run pod install from the Example directory first.

Phone number example

AnyFormatKitDemo: Simple text formatting in Swift

Currency example

AnyFormatKitCurrencyDemo: Currency formatting in Swift

Requirements

  • iOS 8.0+
  • Swift 4.0+
  • Xcode 9.0+

Migration Guides

Installation

CocoaPods

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

pod 'AnyFormatKit'

Then, run the following command:

$ pod install

Carthage

To integrate AnyFormatKit into your Xcode project using Carthage, specify it in your Cartfile:

github "luximetr/AnyFormatKit" ~> 0.2.0

Run carthage update to build the framework and drag the built AnyFormatKit.framework into your Xcode project.

Usage

Import

import AnyFormatKit

Formatting with TextFormatter

let phoneFormatter = DefaultTextFormatter(textPattern: "### (###) ###-##-##")
phoneFormatter.format("+123456789012") // +12 (345) 678-90-12

let customFormatter = DefaultTextFormatter(textPattern: "###-###custom###-###")
customFormatter.format("111222333444") // 111-222custom333-444

You can also set your own symbol in the pattern

let cardFormatter = DefaultTextFormatter(textPattern: "XXXX XXXX XXXX XXXX", patternSymbol: "X")
cardFormatter.format("4444555566667777") // 4444 5555 6666 7777

For string with different length

let formatter = DefaultTextFormatter(textPattern: "## ###-##")
formatter.format("1234") // 12 34
formatter.format("123456789") // 12 345-67

Unformatting

let formatter = DefaultTextFormatter(textPattern: "## ###-##")
formatter.unformat("99 888-77") // 9988877

Formatting during typing

Code from example app

let formatter = DefaultTextInputFormatter(textPattern: "### (###) ###-##-##")

// inside of UITextFieldDelegate shouldChangeTextIn method
let result = formatter.formatInput(currentText: textView.text, range: range, replacementString: text)
textView.text = result.formattedText
textView.setCursorLocation(result.caretBeginOffset)

Author

luximetr, [email protected]

License

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