Skip to content

Commit 1a2bd54

Browse files
committed
Clean code and fixed font styles.
1 parent c0b5aef commit 1a2bd54

File tree

6 files changed

+68
-80
lines changed

6 files changed

+68
-80
lines changed

Package.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ let package = Package(
66
name: "SPSettingsIcons",
77
defaultLocalization: "en",
88
platforms: [
9-
.iOS(.v13)
9+
.iOS(.v13),
10+
.tvOS(.v13),
11+
.macOS(.v11)
1012
],
1113
products: [
1214
.library(

SPSettingsIcons.podspec

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Pod::Spec.new do |s|
22

33
s.name = 'SPSettingsIcons'
4-
s.version = '1.0.0'
4+
s.version = '1.0.1'
55
s.summary = 'Generator of settings icon by SF Symbols.'
66
s.homepage = 'https://github.com/sparrowcode/SPSettingsIcons'
77
s.source = { :git => 'https://github.com/sparrowcode/SPSettingsIcons.git', :tag => s.version }
@@ -10,6 +10,7 @@ Pod::Spec.new do |s|
1010

1111
s.swift_version = '5.1'
1212
s.ios.deployment_target = '13.0'
13+
s.tvos.deployment_target = '13.0'
1314

1415
s.source_files = 'Sources/SPSettingsIcons/**/*.swift'
1516

Sources/SPSettingsIcons/Generator.swift

Lines changed: 0 additions & 56 deletions
This file was deleted.

Sources/SPSettingsIcons/SettingsIcon.swift renamed to Sources/SPSettingsIcons/SwiftUI+SettingsIcon.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#if canImport(SwiftUI)
2323
import SwiftUI
2424

25+
@available(iOS 13, tvOS 13, macOS 11, *)
2526
public struct SettingsIcon: View {
2627

2728
let systemName: String
@@ -30,10 +31,10 @@ public struct SettingsIcon: View {
3031
public var body: some View {
3132
ZStack {
3233
Image(systemName: backgroundSystemName)
33-
.font(.system(size: backgroundFontSize))
34+
.font(.system(size: CGFloat(backgroundFontSize)))
3435
.foregroundColor(backgroundColor)
3536
Image(systemName: systemName)
36-
.font(.system(size: iconFontSize))
37+
.font(.system(size: CGFloat(iconFontSize)))
3738
.foregroundColor(.white)
3839
}
3940
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
// The MIT License (MIT)
2+
// Copyright © 2022 Ivan Vorobei (hello@ivanvorobei.by)
3+
//
4+
// Permission is hereby granted, free of charge, to any person obtaining a copy
5+
// of this software and associated documentation files (the "Software"), to deal
6+
// in the Software without restriction, including without limitation the rights
7+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8+
// copies of the Software, and to permit persons to whom the Software is
9+
// furnished to do so, subject to the following conditions:
10+
//
11+
// The above copyright notice and this permission notice shall be included in all
12+
// copies or substantial portions of the Software.
13+
//
14+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20+
// SOFTWARE.
21+
22+
#if canImport(UIKit)
23+
import UIKit
24+
25+
extension UIImage {
26+
27+
@available(iOS 13, tvOS 13, *)
28+
public static func generateSettingsIcon(_ systemName: String, backgroundColor: UIColor) -> UIImage? {
29+
let iconConfiguration = UIImage.SymbolConfiguration(pointSize: CGFloat(iconFontSize), weight: .regular)
30+
let iconImage = UIImage(systemName: systemName, withConfiguration: iconConfiguration)?.withTintColor(.white, renderingMode: .alwaysOriginal)
31+
32+
let backgroundConfiguration = UIImage.SymbolConfiguration(pointSize: CGFloat(backgroundFontSize), weight: .regular)
33+
let backgroundImage = UIImage(systemName: backgroundSystemName, withConfiguration: backgroundConfiguration)!.withTintColor(backgroundColor, renderingMode: .alwaysOriginal)
34+
35+
let size = backgroundImage.size
36+
UIGraphicsBeginImageContextWithOptions(size, false, .zero)
37+
38+
backgroundImage.draw(in: CGRect(origin: .zero, size: size))
39+
40+
if let iconImage = iconImage {
41+
let iconSize = iconImage.size
42+
iconImage.draw(in: CGRect(
43+
origin: .init(
44+
x: (size.width - iconSize.width) / 2,
45+
y: (size.height - iconSize.height) / 2
46+
),
47+
size: iconSize
48+
))
49+
}
50+
51+
let settingsImage = UIGraphicsGetImageFromCurrentImageContext()
52+
UIGraphicsEndImageContext()
53+
return settingsImage
54+
}
55+
}
56+
#endif

Sources/SPSettingsIcons/Extensions.swift renamed to Sources/SPSettingsIcons/Values.swift

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -19,24 +19,8 @@
1919
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2020
// SOFTWARE.
2121

22-
#if canImport(UIKit)
23-
import UIKit
22+
import Foundation
2423

25-
extension UIImage {
26-
27-
public static func generateSettingsIcon(_ systemName: String, backgroundColor: UIColor) -> UIImage? {
28-
return generate(systemName: systemName, backgroundColor: backgroundColor)
29-
}
30-
}
31-
#endif
32-
33-
#if canImport(SwiftUI)
34-
import SwiftUI
35-
36-
extension Image {
37-
38-
public static func generateSettingsIcon(_ systemName: String, backgroundColor: UIColor) -> UIImage? {
39-
return generate(systemName: systemName, backgroundColor: backgroundColor)
40-
}
41-
}
42-
#endif
24+
var iconFontSize: Int { 16 }
25+
var backgroundFontSize: Int { 32 }
26+
var backgroundSystemName: String { "app.fill" }

0 commit comments

Comments
 (0)