Skip to content

Commit df72fc4

Browse files
committed
UITextField+ApplyStyle
1 parent e8e51b0 commit df72fc4

File tree

3 files changed

+351
-0
lines changed

3 files changed

+351
-0
lines changed

ApplyStyleKit.xcodeproj/project.pbxproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
518F391421C3F18B00D6D903 /* ApplyStyleKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 518F390A21C3F18B00D6D903 /* ApplyStyleKit.framework */; };
2323
518F391921C3F18B00D6D903 /* ApplyStyleKitTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 518F391821C3F18B00D6D903 /* ApplyStyleKitTests.swift */; };
2424
518F391B21C3F18B00D6D903 /* ApplyStyleKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 518F390D21C3F18B00D6D903 /* ApplyStyleKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
25+
51C6EF43225B98E9007E58EC /* UITextField+ApplyStyleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51C6EF42225B98E9007E58EC /* UITextField+ApplyStyleTests.swift */; };
26+
51C6EF45225B9944007E58EC /* UITextField+ApplyStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51C6EF44225B9944007E58EC /* UITextField+ApplyStyle.swift */; };
2527
51C715FF21C3FAD700110ABA /* ApplyStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51C715FE21C3FAD700110ABA /* ApplyStyle.swift */; };
2628
51C7160621C3FB3700110ABA /* CALayer+ApplyStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51C7160021C3FB3700110ABA /* CALayer+ApplyStyle.swift */; };
2729
51C7160721C3FB3700110ABA /* UIButton+ApplyStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51C7160121C3FB3700110ABA /* UIButton+ApplyStyle.swift */; };
@@ -66,6 +68,8 @@
6668
518F391321C3F18B00D6D903 /* ApplyStyleKitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ApplyStyleKitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
6769
518F391821C3F18B00D6D903 /* ApplyStyleKitTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplyStyleKitTests.swift; sourceTree = "<group>"; };
6870
518F391A21C3F18B00D6D903 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
71+
51C6EF42225B98E9007E58EC /* UITextField+ApplyStyleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITextField+ApplyStyleTests.swift"; sourceTree = "<group>"; };
72+
51C6EF44225B9944007E58EC /* UITextField+ApplyStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITextField+ApplyStyle.swift"; sourceTree = "<group>"; };
6973
51C715FE21C3FAD700110ABA /* ApplyStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplyStyle.swift; sourceTree = "<group>"; };
7074
51C7160021C3FB3700110ABA /* CALayer+ApplyStyle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CALayer+ApplyStyle.swift"; sourceTree = "<group>"; };
7175
51C7160121C3FB3700110ABA /* UIButton+ApplyStyle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIButton+ApplyStyle.swift"; sourceTree = "<group>"; };
@@ -134,6 +138,7 @@
134138
51399CFE21CDBEFE00574BDB /* UISlider+ApplyStyleTests.swift */,
135139
51399D0521CDDCB100574BDB /* UICollectionView+ApplyStyleTests.swift */,
136140
51399D0721CDDD8C00574BDB /* UITableView+ApplyStyleTests.swift */,
141+
51C6EF42225B98E9007E58EC /* UITextField+ApplyStyleTests.swift */,
137142
);
138143
path = "UIKit+ApplyStyle";
139144
sourceTree = "<group>";
@@ -203,6 +208,7 @@
203208
51399CFC21CDBEE800574BDB /* UISlider+ApplyStyle.swift */,
204209
51399D0321CDDC9B00574BDB /* UICollectionView+ApplyStyle.swift */,
205210
51399D0921CDDD9A00574BDB /* UITableView+ApplyStyle.swift */,
211+
51C6EF44225B9944007E58EC /* UITextField+ApplyStyle.swift */,
206212
);
207213
path = "UIKit+ApplyStyle";
208214
sourceTree = "<group>";
@@ -379,6 +385,7 @@
379385
5143DAAA21C9148A00D7BCDB /* UIStackView+ApplyStyle.swift in Sources */,
380386
51C7160B21C3FB3700110ABA /* UISwitch+ApplyStyle.swift in Sources */,
381387
175D80AD21C762480008DADD /* UIControl+ApplyStyle.swift in Sources */,
388+
51C6EF45225B9944007E58EC /* UITextField+ApplyStyle.swift in Sources */,
382389
51C7160621C3FB3700110ABA /* CALayer+ApplyStyle.swift in Sources */,
383390
);
384391
runOnlyForDeploymentPostprocessing = 0;
@@ -394,6 +401,7 @@
394401
516AB57821C5CBC60026052C /* UIView+ApplyStyleTests.swift in Sources */,
395402
51399D0621CDDCB100574BDB /* UICollectionView+ApplyStyleTests.swift in Sources */,
396403
51399D0821CDDD8C00574BDB /* UITableView+ApplyStyleTests.swift in Sources */,
404+
51C6EF43225B98E9007E58EC /* UITextField+ApplyStyleTests.swift in Sources */,
397405
516AB57A21C5CF770026052C /* UILabel+ApplyStyleTests.swift in Sources */,
398406
);
399407
runOnlyForDeploymentPostprocessing = 0;
Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
//
2+
// UITextField+ApplyStyle.swift
3+
// ApplyStyleKit
4+
//
5+
// Created by shindyu on 2019/04/08.
6+
// Copyright © 2019 shindyu. All rights reserved.
7+
//
8+
9+
import UIKit
10+
11+
extension StyleObject where Base: UITextField {
12+
@discardableResult public func text(_ text: String?) -> StyleObject {
13+
base.text = text
14+
return self
15+
}
16+
17+
@discardableResult public func attributedText(_ attributedText: NSAttributedString?) -> StyleObject {
18+
base.attributedText = attributedText
19+
return self
20+
}
21+
22+
@discardableResult public func textColor(_ textColor: UIColor?) -> StyleObject {
23+
base.textColor = textColor
24+
return self
25+
}
26+
27+
@discardableResult public func font(_ font: UIFont?) -> StyleObject {
28+
base.font = font
29+
return self
30+
}
31+
32+
@discardableResult public func textAlignment(_ textAlignment: NSTextAlignment) -> StyleObject {
33+
base.textAlignment = textAlignment
34+
return self
35+
}
36+
37+
@discardableResult public func borderStyle(_ borderStyle: UITextField.BorderStyle) -> StyleObject {
38+
base.borderStyle = borderStyle
39+
return self
40+
}
41+
42+
@discardableResult public func defaultTextAttributes(_ defaultTextAttributes: [NSAttributedString.Key : Any]) -> StyleObject {
43+
base.defaultTextAttributes = defaultTextAttributes
44+
return self
45+
}
46+
47+
@discardableResult public func placeholder(_ placeholder: String?) -> StyleObject {
48+
base.placeholder = placeholder
49+
return self
50+
}
51+
52+
@discardableResult public func attributedPlaceholder(_ attributedPlaceholder: NSAttributedString?) -> StyleObject {
53+
base.attributedPlaceholder = attributedPlaceholder
54+
return self
55+
}
56+
57+
@discardableResult public func clearsOnBeginEditing(_ clearsOnBeginEditing: Bool) -> StyleObject {
58+
base.clearsOnBeginEditing = clearsOnBeginEditing
59+
return self
60+
}
61+
62+
@discardableResult public func adjustsFontSizeToFitWidth(_ adjustsFontSizeToFitWidth: Bool) -> StyleObject {
63+
base.adjustsFontSizeToFitWidth = adjustsFontSizeToFitWidth
64+
return self
65+
}
66+
67+
@discardableResult public func minimumFontSize(_ minimumFontSize: CGFloat) -> StyleObject {
68+
base.minimumFontSize = minimumFontSize
69+
return self
70+
}
71+
72+
@discardableResult public func delegate(_ delegate: UITextFieldDelegate?) -> StyleObject {
73+
base.delegate = delegate
74+
return self
75+
}
76+
77+
@discardableResult public func background(_ background: UIImage?) -> StyleObject {
78+
base.background = background
79+
return self
80+
}
81+
82+
@discardableResult public func disabledBackground(_ disabledBackground: UIImage?) -> StyleObject {
83+
base.disabledBackground = disabledBackground
84+
return self
85+
}
86+
87+
@discardableResult public func allowsEditingTextAttributes(_ allowsEditingTextAttributes: Bool) -> StyleObject {
88+
base.allowsEditingTextAttributes = allowsEditingTextAttributes
89+
return self
90+
}
91+
92+
@discardableResult public func typingAttributes(_ typingAttributes: [NSAttributedString.Key : Any]?) -> StyleObject {
93+
base.typingAttributes = typingAttributes
94+
return self
95+
}
96+
97+
@discardableResult public func clearButtonMode(_ clearButtonMode: UITextField.ViewMode) -> StyleObject {
98+
base.clearButtonMode = clearButtonMode
99+
return self
100+
}
101+
102+
@discardableResult public func leftView(_ leftView: UIView?) -> StyleObject {
103+
base.leftView = leftView
104+
return self
105+
}
106+
107+
@discardableResult public func leftViewMode(_ leftViewMode: UITextField.ViewMode) -> StyleObject {
108+
base.leftViewMode = leftViewMode
109+
return self
110+
}
111+
112+
@discardableResult public func rightView(_ rightView: UIView?) -> StyleObject {
113+
base.rightView = rightView
114+
return self
115+
}
116+
117+
@discardableResult public func rightViewMode(_ rightViewMode: UITextField.ViewMode) -> StyleObject {
118+
base.rightViewMode = rightViewMode
119+
return self
120+
}
121+
122+
@discardableResult public func drawText(in rect: CGRect) -> StyleObject {
123+
base.drawText(in: rect)
124+
return self
125+
}
126+
127+
@discardableResult public func drawPlaceholder(in rect: CGRect) -> StyleObject {
128+
base.drawPlaceholder(in: rect)
129+
return self
130+
}
131+
132+
@discardableResult public func inputView(_ inputView: UIView?) -> StyleObject {
133+
base.inputView = inputView
134+
return self
135+
}
136+
137+
@discardableResult public func inputAccessoryView(_ inputAccessoryView: UIView?) -> StyleObject {
138+
base.inputAccessoryView = inputAccessoryView
139+
return self
140+
}
141+
142+
@discardableResult public func clearsOnInsertion(_ clearsOnInsertion: Bool) -> StyleObject {
143+
base.clearsOnInsertion = clearsOnInsertion
144+
return self
145+
}
146+
}
Lines changed: 197 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,197 @@
1+
//
2+
// UITextField+ApplyStyleTests.swift
3+
// ApplyStyleKitTests
4+
//
5+
// Created by shindyu on 2019/04/08.
6+
// Copyright © 2019 shindyu. All rights reserved.
7+
//
8+
9+
import XCTest
10+
11+
class UITextField_ApplyStyleTests: XCTestCase {
12+
var textField: UITextField!
13+
14+
override func setUp() {
15+
textField = UITextField()
16+
}
17+
18+
func test_text() {
19+
let text = "test"
20+
textField.applyStyle.text(text)
21+
22+
XCTAssertEqual(textField.text, text)
23+
}
24+
25+
// func test_attributedText() {
26+
// let attributedText: NSAttributedString? = nil
27+
// textField.applyStyle.attributedText(attributedText)
28+
//
29+
// XCTAssertEqual(textField.attributedText, attributedText)
30+
// }
31+
32+
func test_textColor() {
33+
let textColor: UIColor = .blue
34+
textField.applyStyle.textColor(textColor)
35+
36+
XCTAssertEqual(textField.textColor, textColor)
37+
}
38+
39+
func test_font() {
40+
let font = UIFont.boldSystemFont(ofSize: 12)
41+
textField.applyStyle.font(font)
42+
43+
XCTAssertEqual(textField.font, font)
44+
}
45+
46+
func test_textAlignment() {
47+
let textAlignment: NSTextAlignment = .right
48+
textField.applyStyle.textAlignment(textAlignment)
49+
50+
XCTAssertEqual(textField.textAlignment, textAlignment)
51+
}
52+
53+
func test_borderStyle() {
54+
let borderStyle: UITextField.BorderStyle = .bezel
55+
textField.applyStyle.borderStyle(borderStyle)
56+
57+
XCTAssertEqual(textField.borderStyle, borderStyle)
58+
}
59+
60+
// func test_defaultTextAttributes() {
61+
// let defaultTextAttributes: [NSAttributedString.Key: Any] = [.strokeColor: UIColor.red]
62+
//
63+
// textField.applyStyle.defaultTextAttributes(defaultTextAttributes)
64+
//
65+
// XCTAssertEqual(textField.defaultTextAttributes, defaultTextAttributes)
66+
// }
67+
68+
func test_placeholder() {
69+
let placeholder = "placeholder"
70+
textField.applyStyle.placeholder(placeholder)
71+
72+
XCTAssertEqual(textField.placeholder, placeholder)
73+
}
74+
75+
func test_attributedPlaceholder() {
76+
let attributedPlaceholder = NSAttributedString(string: "attributedPlaceholder")
77+
textField.applyStyle.attributedPlaceholder(attributedPlaceholder)
78+
79+
XCTAssertEqual(textField.attributedPlaceholder, attributedPlaceholder)
80+
}
81+
82+
func test_clearsOnBeginEditing() {
83+
let clearsOnBeginEditing = true
84+
textField.applyStyle.clearsOnBeginEditing(clearsOnBeginEditing)
85+
86+
XCTAssertEqual(textField.clearsOnBeginEditing, clearsOnBeginEditing)
87+
}
88+
89+
func test_adjustsFontSizeToFitWidth() {
90+
let adjustsFontSizeToFitWidth = true
91+
textField.applyStyle.adjustsFontSizeToFitWidth(adjustsFontSizeToFitWidth)
92+
93+
XCTAssertEqual(textField.adjustsFontSizeToFitWidth, adjustsFontSizeToFitWidth)
94+
}
95+
96+
func test_minimumFontSize() {
97+
let minimumFontSize: CGFloat = 2.0
98+
textField.applyStyle.minimumFontSize(minimumFontSize)
99+
100+
XCTAssertEqual(textField.minimumFontSize, minimumFontSize)
101+
}
102+
103+
func test_delegate() {
104+
let delegate = self
105+
textField.applyStyle.delegate(delegate)
106+
107+
XCTAssertEqual(textField.delegate as! NSObject, delegate)
108+
}
109+
110+
func test_background() {
111+
let image: UIImage = .createEmptyImage()
112+
textField.applyStyle.background(image)
113+
114+
XCTAssertEqual(textField.background, image)
115+
}
116+
117+
func test_disabledBackground() {
118+
let image: UIImage = .createEmptyImage()
119+
textField.applyStyle.disabledBackground(image)
120+
121+
XCTAssertEqual(textField.disabledBackground, image)
122+
}
123+
124+
func test_allowsEditingTextAttributes() {
125+
let allowsEditingTextAttributes = true
126+
textField.applyStyle.allowsEditingTextAttributes(allowsEditingTextAttributes)
127+
128+
XCTAssertEqual(textField.allowsEditingTextAttributes, allowsEditingTextAttributes)
129+
}
130+
131+
// func test_typingAttributes() {
132+
// let typingAttributes: [NSAttributedString.Key: Any]? = [.strokeColor: UIColor.red]
133+
// textField.applyStyle.typingAttributes(typingAttributes)
134+
//
135+
// XCTAssertEqual(textField.typingAttributes, typingAttributes)
136+
// }
137+
138+
func test_clearButtonMode() {
139+
let clearButtonMode: UITextField.ViewMode = .unlessEditing
140+
textField.applyStyle.clearButtonMode(clearButtonMode)
141+
142+
XCTAssertEqual(textField.clearButtonMode, clearButtonMode)
143+
}
144+
145+
func test_leftView() {
146+
let view = UIView()
147+
textField.applyStyle.leftView(view)
148+
149+
XCTAssertEqual(textField.leftView, view)
150+
}
151+
152+
func test_leftViewMode() {
153+
let leftViewMode: UITextField.ViewMode = .unlessEditing
154+
textField.applyStyle.leftViewMode(leftViewMode)
155+
156+
XCTAssertEqual(textField.leftViewMode, leftViewMode)
157+
}
158+
159+
func test_rightView() {
160+
let view = UIView()
161+
textField.applyStyle.rightView(view)
162+
163+
XCTAssertEqual(textField.rightView, view)
164+
}
165+
166+
func test_rightViewMode() {
167+
let rightViewMode: UITextField.ViewMode = .unlessEditing
168+
textField.applyStyle.rightViewMode(rightViewMode)
169+
170+
XCTAssertEqual(textField.rightViewMode, rightViewMode)
171+
}
172+
173+
func test_inputView() {
174+
let view = UIView()
175+
textField.applyStyle.inputView(view)
176+
177+
XCTAssertEqual(textField.inputView, view)
178+
}
179+
180+
func test_inputAccessoryView() {
181+
let view = UIView()
182+
textField.applyStyle.inputAccessoryView(view)
183+
184+
XCTAssertEqual(textField.inputAccessoryView, view)
185+
}
186+
187+
func test_clearsOnInsertion() {
188+
let clearsOnInsertion = true
189+
textField.applyStyle.clearsOnInsertion(clearsOnInsertion)
190+
191+
XCTAssertEqual(textField.clearsOnInsertion, clearsOnInsertion)
192+
}
193+
}
194+
195+
extension UITextField_ApplyStyleTests: UITextFieldDelegate {
196+
197+
}

0 commit comments

Comments
 (0)