Skip to content

Commit

Permalink
Change the logic to use the first letter of the first and last word #3
Browse files Browse the repository at this point in the history
  • Loading branch information
vpeschenkov committed Oct 28, 2017
1 parent bdce0e1 commit cbb80a8
Show file tree
Hide file tree
Showing 32 changed files with 752 additions and 543 deletions.
24 changes: 12 additions & 12 deletions LetterAvatarKit.podspec
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
Pod::Spec.new do |s|
s.name = 'LetterAvatarKit'
s.platform = :ios, '8.0'
s.version = '1.0.1'
s.license = { :type => 'MIT' }
s.homepage = 'https://github.com/vpeschenkov/LetterAvatarKit'
s.authors = { 'Victor Peschenkov' => 'nerevarxx@gmail.com' }
s.summary = 'UIImage extension that generates letter-based avatars written in Swift.'
s.source = { :git => 'https://github.com/vpeschenkov/LetterAvatarKit.git', :tag => s.version.to_s }
s.source_files = 'LetterAvatarKit/*.{h,swift}', 'LetterAvatarKit/Extensions/*.{swift}'
s.requires_arc = true
s.framework = 'Foundation', 'UIKit'
Pod::Spec.new do |spec|
spec.name = 'LetterAvatarKit'
spec.platform = :ios, '8.0'
spec.version = '1.1.0'
spec.license = { :type => 'MIT' }
spec.homepage = 'https://github.com/vpeschenkov/LetterAvatarKit'
spec.authors = { 'Victor Peschenkov' => 'nerevarxx@gmail.com' }
spec.summary = 'UIImage extension that generates letter-based avatars written in Swift.'
spec.source = { :git => 'https://github.com/vpeschenkov/LetterAvatarKit.git', :tag => spec.version.to_s }
spec.source_files = 'LetterAvatarKit/*.{h,swift}', 'LetterAvatarKit/Extensions/*.{swift}'
spec.requires_arc = true
spec.framework = 'Foundation', 'UIKit'
end
68 changes: 38 additions & 30 deletions LetterAvatarKit.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,19 @@
objects = {

/* Begin PBXBuildFile section */
EB516B651F8810D200BEA1F2 /* CharacterExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB516B621F8810D200BEA1F2 /* CharacterExtension.swift */; };
EB516B661F8810D200BEA1F2 /* UIColorExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB516B631F8810D200BEA1F2 /* UIColorExtension.swift */; };
EB516B671F8810D200BEA1F2 /* UIImageExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB516B641F8810D200BEA1F2 /* UIImageExtension.swift */; };
EB516B6C1F88110A00BEA1F2 /* CharacterExtensionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB516B691F88110A00BEA1F2 /* CharacterExtensionTests.swift */; };
EB516B6D1F88110A00BEA1F2 /* UIColorExtensionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB516B6A1F88110A00BEA1F2 /* UIColorExtensionTests.swift */; };
EB516B6E1F88110A00BEA1F2 /* UIImageExtensionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB516B6B1F88110A00BEA1F2 /* UIImageExtensionTests.swift */; };
351F6CEF1FA3F9A8003059D2 /* LetterAvatarOneWordTestImage@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 351F6CED1FA3F9A8003059D2 /* LetterAvatarOneWordTestImage@3x.png */; };
351F6CF01FA3F9A8003059D2 /* LetterAvatarOneWordTestImage@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 351F6CEE1FA3F9A8003059D2 /* LetterAvatarOneWordTestImage@2x.png */; };
EB516B651F8810D200BEA1F2 /* Character+LetterAvatarKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB516B621F8810D200BEA1F2 /* Character+LetterAvatarKit.swift */; };
EB516B661F8810D200BEA1F2 /* UIColor+LetterAvatarKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB516B631F8810D200BEA1F2 /* UIColor+LetterAvatarKit.swift */; };
EB516B671F8810D200BEA1F2 /* UIImage+LetterAvatarKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB516B641F8810D200BEA1F2 /* UIImage+LetterAvatarKit.swift */; };
EB516B6C1F88110A00BEA1F2 /* Character+LetterAvatarKitTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB516B691F88110A00BEA1F2 /* Character+LetterAvatarKitTests.swift */; };
EB516B6D1F88110A00BEA1F2 /* UIColor+LetterAvatarKitTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB516B6A1F88110A00BEA1F2 /* UIColor+LetterAvatarKitTests.swift */; };
EB516B6E1F88110A00BEA1F2 /* UIImage+LetterAvatarKitTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB516B6B1F88110A00BEA1F2 /* UIImage+LetterAvatarKitTests.swift */; };
EB821DF61F98B906009B3775 /* LetterAvatarEmptyTestImage@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = EB821DF21F98B906009B3775 /* LetterAvatarEmptyTestImage@2x.png */; };
EB821DF71F98B906009B3775 /* LetterAvatarEmptyTestImage@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = EB821DF31F98B906009B3775 /* LetterAvatarEmptyTestImage@3x.png */; };
EB821DF81F98B906009B3775 /* LetterAvatarTestImage@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = EB821DF41F98B906009B3775 /* LetterAvatarTestImage@2x.png */; };
EB821DF91F98B906009B3775 /* LetterAvatarTestImage@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = EB821DF51F98B906009B3775 /* LetterAvatarTestImage@3x.png */; };
EB821DFC1F98C233009B3775 /* UIImage+CompareOfPixels.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB821DFB1F98C233009B3775 /* UIImage+CompareOfPixels.swift */; };
EB821DFC1F98C233009B3775 /* UIImage+TestsUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB821DFB1F98C233009B3775 /* UIImage+TestsUtilities.swift */; };
EB8EC4131F85929E000B7641 /* LetterAvatarKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EB8EC4091F85929E000B7641 /* LetterAvatarKit.framework */; };
EB8EC4181F85929E000B7641 /* LetterAvatarBuilderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB8EC4171F85929E000B7641 /* LetterAvatarBuilderTests.swift */; };
EB8EC41A1F85929E000B7641 /* LetterAvatarKit.h in Headers */ = {isa = PBXBuildFile; fileRef = EB8EC40C1F85929E000B7641 /* LetterAvatarKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
Expand All @@ -35,17 +37,19 @@
/* End PBXContainerItemProxy section */

/* Begin PBXFileReference section */
EB516B621F8810D200BEA1F2 /* CharacterExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CharacterExtension.swift; sourceTree = "<group>"; };
EB516B631F8810D200BEA1F2 /* UIColorExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIColorExtension.swift; sourceTree = "<group>"; };
EB516B641F8810D200BEA1F2 /* UIImageExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIImageExtension.swift; sourceTree = "<group>"; };
EB516B691F88110A00BEA1F2 /* CharacterExtensionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CharacterExtensionTests.swift; sourceTree = "<group>"; };
EB516B6A1F88110A00BEA1F2 /* UIColorExtensionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIColorExtensionTests.swift; sourceTree = "<group>"; };
EB516B6B1F88110A00BEA1F2 /* UIImageExtensionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIImageExtensionTests.swift; sourceTree = "<group>"; };
351F6CED1FA3F9A8003059D2 /* LetterAvatarOneWordTestImage@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "LetterAvatarOneWordTestImage@3x.png"; sourceTree = "<group>"; };
351F6CEE1FA3F9A8003059D2 /* LetterAvatarOneWordTestImage@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "LetterAvatarOneWordTestImage@2x.png"; sourceTree = "<group>"; };
EB516B621F8810D200BEA1F2 /* Character+LetterAvatarKit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Character+LetterAvatarKit.swift"; sourceTree = "<group>"; };
EB516B631F8810D200BEA1F2 /* UIColor+LetterAvatarKit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIColor+LetterAvatarKit.swift"; sourceTree = "<group>"; };
EB516B641F8810D200BEA1F2 /* UIImage+LetterAvatarKit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIImage+LetterAvatarKit.swift"; sourceTree = "<group>"; };
EB516B691F88110A00BEA1F2 /* Character+LetterAvatarKitTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Character+LetterAvatarKitTests.swift"; sourceTree = "<group>"; };
EB516B6A1F88110A00BEA1F2 /* UIColor+LetterAvatarKitTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIColor+LetterAvatarKitTests.swift"; sourceTree = "<group>"; };
EB516B6B1F88110A00BEA1F2 /* UIImage+LetterAvatarKitTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIImage+LetterAvatarKitTests.swift"; sourceTree = "<group>"; };
EB821DF21F98B906009B3775 /* LetterAvatarEmptyTestImage@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "LetterAvatarEmptyTestImage@2x.png"; sourceTree = "<group>"; };
EB821DF31F98B906009B3775 /* LetterAvatarEmptyTestImage@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "LetterAvatarEmptyTestImage@3x.png"; sourceTree = "<group>"; };
EB821DF41F98B906009B3775 /* LetterAvatarTestImage@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "LetterAvatarTestImage@2x.png"; sourceTree = "<group>"; };
EB821DF51F98B906009B3775 /* LetterAvatarTestImage@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "LetterAvatarTestImage@3x.png"; sourceTree = "<group>"; };
EB821DFB1F98C233009B3775 /* UIImage+CompareOfPixels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+CompareOfPixels.swift"; sourceTree = "<group>"; };
EB821DFB1F98C233009B3775 /* UIImage+TestsUtilities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+TestsUtilities.swift"; sourceTree = "<group>"; };
EB8EC4091F85929E000B7641 /* LetterAvatarKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LetterAvatarKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
EB8EC40C1F85929E000B7641 /* LetterAvatarKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LetterAvatarKit.h; sourceTree = "<group>"; };
EB8EC40D1F85929E000B7641 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
Expand Down Expand Up @@ -77,38 +81,40 @@
EB516B611F8810D200BEA1F2 /* Extensions */ = {
isa = PBXGroup;
children = (
EB516B631F8810D200BEA1F2 /* UIColorExtension.swift */,
EB516B641F8810D200BEA1F2 /* UIImageExtension.swift */,
EB516B621F8810D200BEA1F2 /* CharacterExtension.swift */,
EB516B631F8810D200BEA1F2 /* UIColor+LetterAvatarKit.swift */,
EB516B641F8810D200BEA1F2 /* UIImage+LetterAvatarKit.swift */,
EB516B621F8810D200BEA1F2 /* Character+LetterAvatarKit.swift */,
);
path = Extensions;
sourceTree = "<group>";
};
EB516B681F88110A00BEA1F2 /* Extensions */ = {
isa = PBXGroup;
children = (
EB516B6A1F88110A00BEA1F2 /* UIColorExtensionTests.swift */,
EB516B6B1F88110A00BEA1F2 /* UIImageExtensionTests.swift */,
EB516B691F88110A00BEA1F2 /* CharacterExtensionTests.swift */,
EB516B6A1F88110A00BEA1F2 /* UIColor+LetterAvatarKitTests.swift */,
EB516B6B1F88110A00BEA1F2 /* UIImage+LetterAvatarKitTests.swift */,
EB516B691F88110A00BEA1F2 /* Character+LetterAvatarKitTests.swift */,
);
path = Extensions;
sourceTree = "<group>";
};
EB821DF11F98B906009B3775 /* Resources */ = {
isa = PBXGroup;
children = (
EB821DF21F98B906009B3775 /* LetterAvatarEmptyTestImage@2x.png */,
EB821DF31F98B906009B3775 /* LetterAvatarEmptyTestImage@3x.png */,
EB821DF41F98B906009B3775 /* LetterAvatarTestImage@2x.png */,
EB821DF51F98B906009B3775 /* LetterAvatarTestImage@3x.png */,
EB821DF21F98B906009B3775 /* LetterAvatarEmptyTestImage@2x.png */,
EB821DF31F98B906009B3775 /* LetterAvatarEmptyTestImage@3x.png */,
351F6CEE1FA3F9A8003059D2 /* LetterAvatarOneWordTestImage@2x.png */,
351F6CED1FA3F9A8003059D2 /* LetterAvatarOneWordTestImage@3x.png */,
);
path = Resources;
sourceTree = "<group>";
};
EB821DFA1F98C0D4009B3775 /* Utilities */ = {
isa = PBXGroup;
children = (
EB821DFB1F98C233009B3775 /* UIImage+CompareOfPixels.swift */,
EB821DFB1F98C233009B3775 /* UIImage+TestsUtilities.swift */,
);
path = Utilities;
sourceTree = "<group>";
Expand Down Expand Up @@ -259,6 +265,8 @@
EB821DF71F98B906009B3775 /* LetterAvatarEmptyTestImage@3x.png in Resources */,
EB821DF81F98B906009B3775 /* LetterAvatarTestImage@2x.png in Resources */,
EB821DF61F98B906009B3775 /* LetterAvatarEmptyTestImage@2x.png in Resources */,
351F6CF01FA3F9A8003059D2 /* LetterAvatarOneWordTestImage@2x.png in Resources */,
351F6CEF1FA3F9A8003059D2 /* LetterAvatarOneWordTestImage@3x.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand All @@ -270,9 +278,9 @@
buildActionMask = 2147483647;
files = (
EB8EC4241F859382000B7641 /* LetterAvatarBuilder.swift in Sources */,
EB516B651F8810D200BEA1F2 /* CharacterExtension.swift in Sources */,
EB516B661F8810D200BEA1F2 /* UIColorExtension.swift in Sources */,
EB516B671F8810D200BEA1F2 /* UIImageExtension.swift in Sources */,
EB516B651F8810D200BEA1F2 /* Character+LetterAvatarKit.swift in Sources */,
EB516B661F8810D200BEA1F2 /* UIColor+LetterAvatarKit.swift in Sources */,
EB516B671F8810D200BEA1F2 /* UIImage+LetterAvatarKit.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand All @@ -281,10 +289,10 @@
buildActionMask = 2147483647;
files = (
EB8EC4181F85929E000B7641 /* LetterAvatarBuilderTests.swift in Sources */,
EB516B6D1F88110A00BEA1F2 /* UIColorExtensionTests.swift in Sources */,
EB516B6C1F88110A00BEA1F2 /* CharacterExtensionTests.swift in Sources */,
EB821DFC1F98C233009B3775 /* UIImage+CompareOfPixels.swift in Sources */,
EB516B6E1F88110A00BEA1F2 /* UIImageExtensionTests.swift in Sources */,
EB516B6D1F88110A00BEA1F2 /* UIColor+LetterAvatarKitTests.swift in Sources */,
EB516B6C1F88110A00BEA1F2 /* Character+LetterAvatarKitTests.swift in Sources */,
EB821DFC1F98C233009B3775 /* UIImage+TestsUtilities.swift in Sources */,
EB516B6E1F88110A00BEA1F2 /* UIImage+LetterAvatarKitTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//
// CharacterExtension.swift
// Character+LetterAvatarKit.swift
// LetterAvatarKit
//
// Copyright 2017 Victor Peschenkov
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//
// UIColorExtension.swift
// UIColor+LetterAvatarKit.swift
// LetterAvatarKit
//
// Copyright 2017 Victor Peschenkov
Expand All @@ -26,10 +26,22 @@
import UIKit
import Foundation

/// Returns a color by HEX code.
///
/// - Parameters:
/// - hex: HEX code.
/// - Returns: The color by HEX code.
func LAKUIColorByHEX(_ hex: Int) -> UIColor {
return LAKUIColorByRGB(red: CGFloat((hex & 0xFF0000) >> 16), green: CGFloat((hex & 0x00FF00) >> 8), blue: CGFloat((hex & 0x0000FF)))
}

/// Returns a color by RGB.
///
/// - Parameters:
/// - red: A value of red color component.
/// - green: A value of green color component.
/// - blue: A value of blue color component.
/// - Returns: The color by RGB.
func LAKUIColorByRGB(red: CGFloat, green: CGFloat, blue: CGFloat) -> UIColor {
return UIColor(red: red / 255, green: green / 255, blue: blue / 255, alpha: CGFloat(1.0))
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//
// UIImageExtension.swift
// UIImage+LetterAvatarKit.swift
// LetterAvatarKit
//
// Copyright 2017 Victor Peschenkov
Expand All @@ -26,18 +26,61 @@
import Foundation

extension UIImage {
/// Makes an letter-based avatar image using given configuration.
///
/// If the username is null, is used "NA".
///
/// If the username is one word, is used second letter of that word.
///
/// If the username has more words than two, is used the first letter
/// of the first and last word.
///
/// - Parameters:
/// - configuration: The configuration that uses to draw a
/// letter-based avatar image.
///
/// - Returns: An instance of UIImage
@objc(lak_makeLetterAvatarWithConfiguration:)
static open func makeLetterAvatar(withConfiguration configuration: LetterAvatarBuilderConfiguration) -> UIImage? {
return LetterAvatarBuilder().makeAvatar(withConfiguration: configuration)
}

/// Makes an letter-based avatar image using given username.
///
/// If the username is null, is used "NA".
///
/// If the username is one word, is used second letter of that word.
///
/// If the username has more words than two, is used the first letter
/// of the first and last word.
///
/// - Parameters:
/// - username: The username that uses to draw a
/// letter-based avatar image.
///
/// - Returns: An instance of UIImage
@objc(lak_makeLetterAvatarWithUsername:)
static open func makeLetterAvatar(withUsername username: String?) -> UIImage? {
let configuration = LetterAvatarBuilderConfiguration()
configuration.username = username
return LetterAvatarBuilder().makeAvatar(withConfiguration: configuration)
}

/// Makes an letter-based avatar image using given username and size.
///
/// If the username is null, is used "NA".
///
/// If the username is one word, is used second letter of that word.
///
/// If the username has more words than two, is used the first letter
/// of the first and last word.
///
/// - Parameters:
/// - username: The username that uses to draw a
/// letter-based avatar image.
/// - size: The avatar size.
///
/// - Returns: An instance of UIImage
@objc(lak_makeLetterAvatarWithUsername:size:)
static open func makeLetterAvatar(withUsername username: String?, size: CGSize) -> UIImage? {
let configuration = LetterAvatarBuilderConfiguration()
Expand Down
2 changes: 1 addition & 1 deletion LetterAvatarKit/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0.1</string>
<string>1.1.0</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSPrincipalClass</key>
Expand Down
Loading

0 comments on commit cbb80a8

Please sign in to comment.