66//
77
88import 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
997
1098//MARK: - Attributed String By Trimming CharacterSet
1199public extension NSAttributedString {
@@ -81,6 +169,12 @@ public extension NSAttributedString {
81169 }
82170}
83171
172+
173+ //MARK: - Set Font
174+
175+ #if os(iOS)
176+ import UIKit
177+
84178//MARK: - Set Color
85179public extension NSAttributedString {
86180 func setColor( for text: String , color: UIColor ) -> NSAttributedString {
@@ -101,9 +195,12 @@ public extension NSAttributedString {
101195 }
102196}
103197
104- //MARK: - Set Font
198+ #else
199+ import AppKit
200+
201+ //MARK: - Set Color
105202public extension NSAttributedString {
106- func setFont ( for text: String , font : UIFont ) -> NSAttributedString {
203+ func setColor ( for text: String , color : NSColor ) -> NSAttributedString {
107204 let ranges = self . string. ranges ( of: text)
108205
109206 guard !ranges. isEmpty else {
@@ -114,31 +211,11 @@ public extension NSAttributedString {
114211 let newStr = self . mutableCopy ( ) as! NSMutableAttributedString
115212 newStr. beginEditing ( )
116213 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)
139215 }
140216 newStr. endEditing ( )
141-
142217 return newStr
143218 }
144219}
220+
221+ #endif
0 commit comments