-
Notifications
You must be signed in to change notification settings - Fork 380
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add extension of UIlabel for adding line spacing with the method of n… #438
base: master
Are you sure you want to change the base?
Changes from 10 commits
cd810e5
6a55e8f
f949239
d4b9474
2d20dac
d59ca01
c4d58e0
638c472
61f701b
e5f55c5
c00d920
277316f
fac501a
13b1dcc
f3047f8
e736d02
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,6 +7,8 @@ | |
// | ||
|
||
#if os(iOS) || os(tvOS) | ||
<<<<<<< HEAD | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You have unresolved merge commits here. |
||
======= | ||
|
||
import XCTest | ||
@testable import EZSwiftExtensions | ||
|
@@ -22,34 +24,67 @@ class UILabelTests: XCTestCase { | |
XCTAssertEqual(label2.font.pointSize, 20) | ||
XCTAssertEqual(label.font.pointSize, 17) | ||
} | ||
>>>>>>> 638c47200b16776d978dc4598237109396915878 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This looks like an unresolved merge, please collapse your commits into one idempotent change. I cannot even begin to tell you how much I despise non fast forward merges. Rebase your changes and replay them on top of the current HEAD commit. |
||
|
||
func testSet() { | ||
import XCTest | ||
@testable import EZSwiftExtensions | ||
class UILabelTests: XCTestCase { | ||
|
||
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 50)) | ||
label.set(text: "EZSwiftExtensions✅", duration: 1) | ||
XCTAssertEqual(label.text, "EZSwiftExtensions✅") | ||
func testInit() { | ||
|
||
let label = UILabel(x: 0, y: 0, w: 200, h: 50) | ||
let expected = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 50)) | ||
let label2 = UILabel(x: 0, y: 0, w: 200, h: 50, fontSize: 20) | ||
|
||
XCTAssertEqual(label.frame, expected.frame) | ||
XCTAssertEqual(label2.font.pointSize, 20) | ||
} | ||
|
||
label.text = "" | ||
label.set(text: "EZSwiftExtensions🚀", duration: 0) | ||
XCTAssertEqual(label.text, "EZSwiftExtensions🚀") | ||
func testSet() { | ||
|
||
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 50)) | ||
label.set(text: "EZSwiftExtensions✅", duration: 1) | ||
XCTAssertEqual(label.text, "EZSwiftExtensions✅") | ||
|
||
label.text = "" | ||
label.set(text: "EZSwiftExtensions🚀", duration: 0) | ||
XCTAssertEqual(label.text, "EZSwiftExtensions🚀") | ||
|
||
label.text = "" | ||
label.set(text: "EZSwiftExtensions❤️", duration: 1) | ||
XCTAssertEqual(label.text, "EZSwiftExtensions❤️") | ||
} | ||
|
||
label.text = "" | ||
label.set(text: "EZSwiftExtensions❤️", duration: 1) | ||
XCTAssertEqual(label.text, "EZSwiftExtensions❤️") | ||
} | ||
|
||
var waitExpectation: XCTestExpectation? | ||
|
||
func wait(duration: TimeInterval) { | ||
waitExpectation = expectation(description: "wait") | ||
Timer.scheduledTimer(timeInterval: duration, target: self, | ||
selector: #selector(UILabelTests.onTimer), userInfo: nil, repeats: false) | ||
waitForExpectations(timeout: duration + 3, handler: nil) | ||
func testSetLineSpacing(){ | ||
|
||
let textForTesting = "I am testing test Set line spacing method" | ||
var paragraphStyle : NSMutableParagraphStyle? | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nitpick : too many empty lines here are there that do not serve a purpose. |
||
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 50)) | ||
label.text = textForTesting | ||
label.setLineSpacing(lineSpacing: 1.5) | ||
|
||
label.attributedText?.enumerateAttribute(NSParagraphStyleAttributeName , in: NSMakeRange(0, (label.attributedText?.length)!), options: [.longestEffectiveRangeNotRequired]) { value, range, isStop in | ||
if let value = value { | ||
paragraphStyle = value as NSMutableParagraphStyle | ||
} | ||
} | ||
|
||
XCTAssertEqual(paragraphStyle?.lineHeightMultiple, 1.5) | ||
} | ||
|
||
var waitExpectation: XCTestExpectation? | ||
|
||
func wait(duration: TimeInterval) { | ||
waitExpectation = expectation(description: "wait") | ||
Timer.scheduledTimer(timeInterval: duration, target: self, | ||
selector: #selector(UILabelTests.onTimer), userInfo: nil, repeats: false) | ||
waitForExpectations(timeout: duration + 3, handler: nil) | ||
} | ||
|
||
func onTimer() { | ||
waitExpectation?.fulfill() | ||
} | ||
} | ||
|
||
func onTimer() { | ||
waitExpectation?.fulfill() | ||
} | ||
} | ||
|
||
#endif |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -61,6 +61,19 @@ extension UILabel { | |
self.text = _text | ||
}, completion: nil) | ||
} | ||
|
||
// Set lineSpacing for UILabel | ||
public func setLineSpacing(lineSpacing: CGFloat) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is it possible to write a unit test for this ? |
||
let paragraphStyle = NSMutableParagraphStyle() | ||
paragraphStyle.lineSpacing = 1.0 | ||
paragraphStyle.lineHeightMultiple = lineSpacing | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is confusing. Does this mean your spacing = 1.0 * lineHeight = lineSpacing. If so, you could just call the method arg as lineHeightMultiple. |
||
paragraphStyle.alignment = self.textAlignment | ||
|
||
let attrString = NSMutableAttributedString(string: self.text!) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This could actually live as its own var. Otherwise its unnecessary allocation of the attr string per call. |
||
attrString.addAttribute(NSFontAttributeName, value: self.font, range: NSMakeRange(0, attrString.length)) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. NSMakeRange is repeated, you can abstract that away as a single call. |
||
attrString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(0, attrString.length)) | ||
self.attributedText = attrString | ||
} | ||
} | ||
|
||
#endif |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minor : With a number (in this case 1).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So do I need removed this spacing ??
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
have a 1 prior to that. Like a numbering thing. But that is really cosmetic, I would suggest taking a look at writing unit tests for the same.