diff --git a/CHANGELOG.md b/CHANGELOG.md index 61adc25b..17b60d27 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,12 +3,15 @@ All notable changes to this project will be documented in this file. ## Unreleased + 1. **Double** - `**?(lhs:Double, rhs:Double)` in [[PR]](https://github.com/goktugyil/EZSwiftExtensions/pull/443) by *Khalian* - 2. **UILabel** - `public convenience init(font: UIFont, color: UIColor, alignment: NSTextAlignment)` in [[PR]](https://github.com/goktugyil/EZSwiftExtensions/pull/441) by *icefall* +3. **UILabelExtensions** + - `setLineSpacing(lineSpacing : CGFloat)` in [[PR]](https://github.com/goktugyil/EZSwiftExtensions/pull/438) by *osama10* + ## [Release 1.10] ### New platform added. @@ -60,7 +63,7 @@ All notable changes to this project will be documented in this file. - `validateEmail()` in [[PR]](https://github.com/goktugyil/EZSwiftExtensions/pull/429) by *Vic-L* - `validateDigits()` in [[PR]](https://github.com/goktugyil/EZSwiftExtensions/pull/429) by *Vic-L* -### Deprecated/Renamed extensions + ### Deprecated/Renamed extensions 1. **UIViewController** - `public func hideKeyboardWhenTappedAround(cancelTouches: Bool = false)` in [[PR]](https://github.com/goktugyil/EZSwiftExtensions/pull/395) by *lfarah* diff --git a/EZSwiftExtensionsTests/UILabelTests.swift b/EZSwiftExtensionsTests/UILabelTests.swift index a1cf0811..9235c9ea 100644 --- a/EZSwiftExtensionsTests/UILabelTests.swift +++ b/EZSwiftExtensionsTests/UILabelTests.swift @@ -5,57 +5,72 @@ // Created by Goktug Yilmaz on 8/25/16. // Copyright © 2016 Goktug Yilmaz. All rights reserved. // - #if os(iOS) || os(tvOS) - -import XCTest -@testable import EZSwiftExtensions -class UILabelTests: XCTestCase { - - 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) + + import XCTest + @testable import EZSwiftExtensions + class UILabelTests: XCTestCase { - let label3 = UILabel(font: UIFont.systemFont(ofSize: 32), color: .red, alignment: .left) + 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) + + let label3 = UILabel(font: UIFont.systemFont(ofSize: 32), color: .red, alignment: .left) + + XCTAssertEqual(label.frame, expected.frame) + XCTAssertEqual(label2.font.pointSize, 20) + XCTAssertEqual(label.font.pointSize, 17) + + XCTAssertEqual(label3.font, UIFont.systemFont(ofSize: 32)) + XCTAssertEqual(label3.textColor, .red) + XCTAssertEqual(label3.textAlignment, .left) + } - XCTAssertEqual(label.frame, expected.frame) - XCTAssertEqual(label2.font.pointSize, 20) - XCTAssertEqual(label.font.pointSize, 17) + 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❤️") + } - XCTAssertEqual(label3.font, UIFont.systemFont(ofSize: 32)) - XCTAssertEqual(label3.textColor, .red) - XCTAssertEqual(label3.textAlignment, .left) - } - - func testSet() { + func testSetLineSpacing(){ + let textForTesting = "I am testing test Set line spacing method" + var paragraphStyle : NSMutableParagraphStyle? + + 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) + } - let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 50)) - label.set(text: "EZSwiftExtensions✅", duration: 1) - XCTAssertEqual(label.text, "EZSwiftExtensions✅") + var waitExpectation: XCTestExpectation? - label.text = "" - label.set(text: "EZSwiftExtensions🚀", duration: 0) - XCTAssertEqual(label.text, "EZSwiftExtensions🚀") + 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) + } - label.text = "" - label.set(text: "EZSwiftExtensions❤️", duration: 1) - XCTAssertEqual(label.text, "EZSwiftExtensions❤️") + func onTimer() { + waitExpectation?.fulfill() + } } - - 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() - } -} - #endif diff --git a/Sources/UILabelExtensions.swift b/Sources/UILabelExtensions.swift index 3c473edc..f6755d8d 100644 --- a/Sources/UILabelExtensions.swift +++ b/Sources/UILabelExtensions.swift @@ -69,6 +69,19 @@ extension UILabel { self.text = _text }, completion: nil) } + + // Set lineSpacing for UILabel + public func setLineSpacing(lineSpacing: CGFloat) { + let paragraphStyle = NSMutableParagraphStyle() + paragraphStyle.lineSpacing = 1.0 + paragraphStyle.lineHeightMultiple = lineSpacing + paragraphStyle.alignment = self.textAlignment + + let attrString = NSMutableAttributedString(string: self.text!) + attrString.addAttribute(NSFontAttributeName, value: self.font, range: NSMakeRange(0, attrString.length)) + attrString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(0, attrString.length)) + self.attributedText = attrString + } } #endif