Atributika alternatives and similar libraries
Based on the "Text" category.
Alternatively, view Atributika alternatives based on common mentions on social networks and blogs.
-
YYText
Powerful text framework for iOS to display and edit rich text. -
Nimbus
The iOS framework that grows only as fast as its documentation -
PhoneNumberKit
A Swift framework for parsing, formatting and validating international phone numbers. Inspired by Google's libphonenumber. -
ZSSRichTextEditor
A beautiful rich text WYSIWYG editor for iOS with a syntax highlighted source view -
Twitter Text Obj
Twitter Text Libraries. This code is used at Twitter to tokenize and parse text to meet the expectations for what can be used on the platform. -
FontAwesomeKit
Icon font library for iOS. Currently supports Font-Awesome, Foundation icons, Zocial, and ionicons. -
SwiftRichString
👩🎨 Elegant Attributed String composition in Swift sauce -
libPhoneNumber-iOS
iOS port from libphonenumber (Google's phone number handling library) -
TwitterTextEditor
A standalone, flexible API that provides a full-featured rich text editor for iOS applications. -
RichEditorView
RichEditorView is a simple, modular, drop-in UIView subclass for Rich Text Editing. -
Down
Blazing fast Markdown / CommonMark rendering in Swift, built upon cmark. -
SwiftString
A comprehensive, lightweight string extension for Swift -
Iconic
:art: Auto-generated icon font library for iOS, watchOS and tvOS -
SwiftyMarkdown
Converts Markdown files and strings into NSAttributedStrings with lots of customisation options. -
MMMarkdown
An Objective-C framework for converting Markdown to HTML. -
CocoaMarkdown
Markdown parsing and rendering for iOS and OS X -
SwiftIconFont
Icons fonts for iOS (Font Awesome 5, Iconic, Ionicon, Octicon, Themify, MapIcon, MaterialIcon, Foundation 3, Elegant Icon, Captain Icon) -
FontBlaster
Programmatically load custom fonts into your iOS, macOS and tvOS app. -
fuse-swift
A lightweight fuzzy-search library, with zero dependencies -
Notepad
[iOS] A fully themeable markdown editor with live syntax highlighting. -
MarkdownKit
A simple and customizable Markdown Parser for Swift -
FormatterKit
stringWithFormat: for the sophisticated hacker set -
NSStringEmojize
A category on NSString to convert Emoji Cheat Sheet codes to their equivalent Unicode characters -
Guitar
A Cross-Platform String and Regular Expression Library written in Swift. -
Mustard
🌭 Mustard is a Swift library for tokenizing strings when splitting by whitespace doesn't cut it. -
Translucid
Lightweight library to set an Image as text background. Written in swift. -
GoogleMaterialDesignIcons
Google Material Design Icons Font for iOS -
Heimdall
Heimdall is a wrapper around the Security framework for simple encryption/decryption operations. -
AttributedTextView
Easiest way to create an attributed UITextView (with support for multiple links and from html)
Appwrite - The Open Source Firebase alternative introduces iOS support
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Atributika or a related project?
README
Atributika
is an easy and painless way to build NSAttributedString. It is able to detect HTML-like tags, links, phone numbers, hashtags, any regex or even standard ios data detectors and style them with various attributes like font, color, etc. Atributika
comes with drop-in label replacement AttributedLabel
which is able to make any detection clickable
Intro
NSAttributedString is really powerful but still a low level API which requires a lot of work to setup things. It is especially painful if string is template and real content is known only in runtime. If you are dealing with localizations, it is also not easy to build NSAttributedString.
Oh wait, but you can use Atributika!
let b = Style("b").font(.boldSystemFont(ofSize: 20)).foregroundColor(.red)
label.attributedText = "Hello <b>World</b>!!!".style(tags: b).attributedString
Yeah, that's much better. Atributika is easy, declarative, flexible and covers all the raw edges for you.
Features
- NEW!
AttributedLabel
is a drop-in label replacement which makes detections clickable and style them dynamically fornormal/highlighted/disabled
states. - detect and style HTML-like tags using custom speedy parser
- detect and style hashtags and mentions (i.e. #something and @someone)
- detect and style links and phone numbers
- detect and style regex and NSDataDetector patterns
- style whole string or just particular ranges
- ... and you can chain all above to parse some uber strings!
- clean and expressive api to build styles
- separate set of detection utils, in case you want to use just them
+
operator to concatenate NSAttributedString with other attributed or regular strings- works on iOS, tvOS, watchOS, macOS
Examples
Detect and style tags, provide base style for the rest of string, don't forget about special html symbols
let redColor = UIColor(red:(0xD0 / 255.0), green: (0x02 / 255.0), blue:(0x1B / 255.0), alpha:1.0)
let a = Style("a").foregroundColor(redColor)
let font = UIFont(name: "AvenirNext-Regular", size: 24)!
let grayColor = UIColor(white: 0x66 / 255.0, alpha: 1)
let all = Style.font(font).foregroundColor(grayColor)
let str = "<a><a></a>tributik<a></a></a>"
.style(tags: a)
.styleAll(all)
.attributedString
Detect and style hashtags and mentions
let str = "#Hello @World!!!"
.styleHashtags(Style.font(.boldSystemFont(ofSize: 45)))
.styleMentions(Style.foregroundColor(.red))
.attributedString
Detect and style links
let str = "Check this website http://google.com"
.styleLinks(Style.foregroundColor(.blue))
.attributedString
Detect and style phone numbers
let str = "Call me (888)555-5512"
.stylePhoneNumbers(Style.foregroundColor(.red))
.attributedString
Uber String
let links = Style.foregroundColor(.blue)
let phoneNumbers = Style.backgroundColor(.yellow)
let mentions = Style.font(.italicSystemFont(ofSize: 12)).foregroundColor(.black)
let b = Style("b").font(.boldSystemFont(ofSize: 12))
let u = Style("u").underlineStyle(.styleSingle)
let all = Style.font(.systemFont(ofSize: 12)).foregroundColor(.gray)
let str = "@all I found <u>really</u> nice framework to manage attributed strings. It is called <b>Atributika</b>. Call me if you want to know more (123)456-7890 #swift #nsattributedstring https://github.com/psharanda/Atributika"
.style(tags: u, b)
.styleMentions(mentions)
.styleHashtags(links)
.styleLinks(links)
.stylePhoneNumbers(phoneNumbers)
.styleAll(all)
.attributedString
AttributedText
Atributika
APIs styleXXX
produce AttributedText
which can be converted into NSAttributedString
. Basically AttributedText
just contains string, base style and all the detections.
AttributedLabel
AttributedLabel
is able to display AttributedText
and makes detections clickable if style contains any attributes for .highlighted
let tweetLabel = AttributedLabel()
tweetLabel.numberOfLines = 0
let all = Style.font(.systemFont(ofSize: 20))
let link = Style("a")
.foregroundColor(.blue, .normal)
.foregroundColor(.brown, .highlighted) // <-- detections with this style will be clickable now
tweetLabel.attributedText = "@e2F If only Bradley's arm was longer. Best photo ever.😊 #oscars https://pic.twitter.com/C9U5NOtGap<br>Check this <a href=\"https://github.com/psharanda/Atributika\">link</a>"
.style(tags: link)
.styleHashtags(link)
.styleMentions(link)
.styleLinks(link)
.styleAll(all)
tweetLabel.onClick = { label, detection in
switch detection.type {
case .hashtag(let tag):
if let url = URL(string: "https://twitter.com/hashtag/\(tag)") {
UIApplication.shared.openURL(url)
}
case .mention(let name):
if let url = URL(string: "https://twitter.com/\(name)") {
UIApplication.shared.openURL(url)
}
case .link(let url):
UIApplication.shared.openURL(url)
case .tag(let tag):
if tag.name == "a", let href = tag.attributes["href"], let url = URL(string: href) {
UIApplication.shared.openURL(url)
}
default:
break
}
}
view.addSubview(tweetLabel)
Requirements
Current version is compatible with:
- Swift 4.0+ (for Swift 3.2 use
swift-3.2
branch) - iOS 8.0 or later
- tvOS 9.0 or later
- watchOS 2.0 or later
- macOS 10.10 or later
Note: AttributedLabel
works only on iOS
Why does Atributika have one 't' in its name?
Because in Belarusian/Russian we have one letter 't' (атрыбутыка/атрибутика). So basically it is transcription, not real word.
Integration
Carthage
Add github "psharanda/Atributika"
to your Cartfile
CocoaPods
Atributika is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "Atributika"
Manual
- Add Atributika to you project as a submodule using
git submodule add https://github.com/psharanda/Atributika.git
- Open the
Atributika
folder & dragAtributika.xcodeproj
into your project tree - Add
Atributika.framework
to your target'sLink Binary with Libraries
Build Phase - Import Atributika with
import Atributika
and you're ready to go
License
Atributika is available under the MIT license. See the LICENSE file for more info.
*Note that all licence references and agreements mentioned in the Atributika README section above
are relevant to that project's source code only.