6
6
//
7
7
8
8
import SwiftUI
9
+ #if os(iOS)
10
+ import UIKit
11
+ public extension NSAttributedString {
12
+ func setFont( for text: String , font: UIFont ) -> NSAttributedString {
13
+ let ranges = self . string. ranges ( of: text)
14
+
15
+ guard !ranges. isEmpty else {
16
+ return self
17
+ }
18
+ let nsRanges = ranges. map { NSRange ( $0, in: self . string) }
19
+
20
+ let newStr = self . mutableCopy ( ) as! NSMutableAttributedString
21
+ newStr. beginEditing ( )
22
+ for nsRange in nsRanges {
23
+ newStr. addAttribute ( . font, value: font, range: nsRange)
24
+ }
25
+ newStr. endEditing ( )
26
+ return newStr
27
+ }
28
+
29
+ func setFont( for words: [ String ] , font: UIFont ) -> NSAttributedString {
30
+ let newStr = self . mutableCopy ( ) as! NSMutableAttributedString
31
+ newStr. beginEditing ( )
32
+
33
+ for word in words {
34
+ let ranges = self . string. ranges ( of: word)
35
+
36
+ guard !ranges. isEmpty else {
37
+ continue
38
+ }
39
+
40
+ let nsRanges = ranges. map { NSRange ( $0, in: self . string) }
41
+
42
+ for nsRange in nsRanges {
43
+ newStr. addAttribute ( . font, value: font, range: nsRange)
44
+ }
45
+ }
46
+ newStr. endEditing ( )
47
+
48
+ return newStr
49
+ }
50
+ }
51
+
52
+ #else
53
+ import AppKit
54
+
55
+ public extension NSAttributedString {
56
+ func setFont( for text: String , font: NSFont ) -> NSAttributedString {
57
+ let ranges = self . string. ranges ( of: text)
58
+
59
+ guard !ranges. isEmpty else {
60
+ return self
61
+ }
62
+ let nsRanges = ranges. map { NSRange ( $0, in: self . string) }
63
+
64
+ let newStr = self . mutableCopy ( ) as! NSMutableAttributedString
65
+ newStr. beginEditing ( )
66
+ for nsRange in nsRanges {
67
+ newStr. addAttribute ( . font, value: font, range: nsRange)
68
+ }
69
+ newStr. endEditing ( )
70
+ return newStr
71
+ }
72
+
73
+ func setFont( for words: [ String ] , font: NSFont ) -> NSAttributedString {
74
+ let newStr = self . mutableCopy ( ) as! NSMutableAttributedString
75
+ newStr. beginEditing ( )
76
+
77
+ for word in words {
78
+ let ranges = self . string. ranges ( of: word)
79
+
80
+ guard !ranges. isEmpty else {
81
+ continue
82
+ }
83
+
84
+ let nsRanges = ranges. map { NSRange ( $0, in: self . string) }
85
+
86
+ for nsRange in nsRanges {
87
+ newStr. addAttribute ( . font, value: font, range: nsRange)
88
+ }
89
+ }
90
+ newStr. endEditing ( )
91
+
92
+ return newStr
93
+ }
94
+ }
95
+
96
+ #endif
9
97
10
98
//MARK: - Attributed String By Trimming CharacterSet
11
99
public extension NSAttributedString {
@@ -81,6 +169,12 @@ public extension NSAttributedString {
81
169
}
82
170
}
83
171
172
+
173
+ //MARK: - Set Font
174
+
175
+ #if os(iOS)
176
+ import UIKit
177
+
84
178
//MARK: - Set Color
85
179
public extension NSAttributedString {
86
180
func setColor( for text: String , color: UIColor ) -> NSAttributedString {
@@ -101,9 +195,12 @@ public extension NSAttributedString {
101
195
}
102
196
}
103
197
104
- //MARK: - Set Font
198
+ #else
199
+ import AppKit
200
+
201
+ //MARK: - Set Color
105
202
public extension NSAttributedString {
106
- func setFont ( for text: String , font : UIFont ) -> NSAttributedString {
203
+ func setColor ( for text: String , color : NSColor ) -> NSAttributedString {
107
204
let ranges = self . string. ranges ( of: text)
108
205
109
206
guard !ranges. isEmpty else {
@@ -114,31 +211,11 @@ public extension NSAttributedString {
114
211
let newStr = self . mutableCopy ( ) as! NSMutableAttributedString
115
212
newStr. beginEditing ( )
116
213
for nsRange in nsRanges {
117
- newStr. addAttribute ( . font, value: font, range: nsRange)
118
- }
119
- newStr. endEditing ( )
120
- return newStr
121
- }
122
-
123
- func setFont( for words: [ String ] , font: UIFont ) -> NSAttributedString {
124
- let newStr = self . mutableCopy ( ) as! NSMutableAttributedString
125
- newStr. beginEditing ( )
126
-
127
- for word in words {
128
- let ranges = self . string. ranges ( of: word)
129
-
130
- guard !ranges. isEmpty else {
131
- continue
132
- }
133
-
134
- let nsRanges = ranges. map { NSRange ( $0, in: self . string) }
135
-
136
- for nsRange in nsRanges {
137
- newStr. addAttribute ( . font, value: font, range: nsRange)
138
- }
214
+ newStr. addAttribute ( . foregroundColor, value: color, range: nsRange)
139
215
}
140
216
newStr. endEditing ( )
141
-
142
217
return newStr
143
218
}
144
219
}
220
+
221
+ #endif
0 commit comments