LetterAvatarKit
📲 Use this extension 🧩 to create letter-based avatars or placeholders 🎭 to be utilized within your app
Install / Use
/learn @vpeschenkov/LetterAvatarKitREADME
LetterAvatarKit
LetterAvatarKit provides an UIImage extension for generating letter-based avatars/placeholders. There are a few images showing what you can achive by using this framework:

Requirements
- iOS 8+
- tvOS 9+
- Swift 4.0+
Features
- Easy to use and intuitive interface
- Highly flexible API allows for customization and integration into various projects
- Use of the builder pattern for constructing avatar configurations
- Support for creating circular, square, or bordered images
- Wide range of flat UI colors available
- Compatible with tvOS platform
Installation
CocoaPods
LetterAvatarKit is available through CocoaPods. To install
it, simply add the following line to your Podfile:
pod "LetterAvatarKit", "1.2.5" # Swift 5.0+, Xcode 12
pod "LetterAvatarKit", "1.2.3" # Swift 5.0+, Xcode 11
pod "LetterAvatarKit", "1.1.7" # Swift 4.2
pod "LetterAvatarKit", "1.1.5" # Swift 4.0
Carthage
Add this to Cartfile
github "vpeschenkov/LetterAvatarKit" == 1.2.5 # Swift 5.0+, Xcode 12
github "vpeschenkov/LetterAvatarKit" == 1.2.3 # Swift 5.0+, Xcode 11
github "vpeschenkov/LetterAvatarKit" == 1.1.7 # Swift 4.2
github "vpeschenkov/LetterAvatarKit" == 1.1.5 # Swift 4.0
$ carthage update
Usage
Swift
Using LetterAvatarMaker:
// Square avatar image
let avatarImage = LetterAvatarMaker()
.setUsername("Letter Avatar")
.build()
avatarImageView.image = avatarImage
// Circle avatar image with white border
let circleAvatarImage = LetterAvatarMaker()
.setCircle(true)
.setUsername("Letter Avatar")
.setBorderWidth(1.0)
.setBackgroundColors([ .red ])
.build()
avatarImageView.image = circleAvatarImage
Using LetterAvatarMaker with closures:
let avatarImage = LetterAvatarMaker()
.build { c in
c.username = "Letter Avatar"
}
avatarImageView.image = avatarImage
let avatarImage = LetterAvatarMaker()
.build { c in
c.circle = true
c.username = "Letter Avatar"
c.borderWidth = 1.0
c.backgroundColors = [ .red ]
}
avatarImageView.image = avatarImage
Using LetterAvatarBuilderConfiguration:
let configuration = LetterAvatarBuilderConfiguration()
configuration.username = "Letter Avatar"
avatarImageView.image = UIImage.makeLetterAvatar(withConfiguration: configuration)
Using UIImage extension:
avatarImageView.image = UIImage.makeLetterAvatar(withUsername: "Letter Avatar")
Objective-C
Using LKLetterAvatarBuilderCongiguration:
LKLetterAvatarBuilderCongiguration *configuration = [[LKLetterAvatarBuilderCongiguration alloc] init];
configuration.username = @"Letter Avatar";
self.avatarImageView.image = [UIImage lk_makeLetterAvatarWithConfiguration:configuration];
Using UIImage extension:
self.avatarImageView.image = [UIImage lk_makeLetterAvatarWithUsername:@"Letter Avatar"];
Customization
You can configure the following properties of LetterAvatarBuilderConfiguration:
/// The username.
open var username: String?
/// The size of an avatar image.
open var size: CGSize = CGSize(width: 80, height: 80)
/// The flag that indicates of using single only one letter, otherwise,
/// as much as wil be possible to obtain. But no more than 3 letters.
open var isSingleLettered: Bool = false
/// The letters font.
open var lettersFont: UIFont = UIFont.systemFont(ofSize: 16.0)
/// The letters colors
open var lettersColor: UIColor = LKUIColorByRGB(red: 236, green: 240, blue: 241)
/// The background colors of an image.
open var backgroundColors: [UIColor] = UIColor.colors
/// The letters font attributes.
open var lettersFontAttributes: [NSAttributedString.Key: Any]?
/// Indicates whether to generate circle or square image.
open var circle: Bool = false
/// The border width of the image.
open var borderWidth: CGFloat = 0.0
/// The border color of the image.
open var borderColor: UIColor = UIColor.white
/// A Boolean flag indicating whether the avatar is opaque.
open var opaque: Bool = false
Community
Questions, comments, issues, and pull requests are welcome!
Contacts
License
Distributed under the MIT license. See LICENSE for more information.
Related Skills
node-connect
336.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
82.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
336.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
82.8kCommit, push, and open a PR
