Added UIStackView extensions to add arranged subviews and convenience initializer

Added tests for extensions

Updated changelog

Updated addArrangedSubviews to take varargs instead of an array
Updated changelog

Updated addArrangedSubviews to take varargs instead of an array
Updated changelog
This commit is contained in:
Kenza Iraki 2017-03-12 15:22:23 -04:00 committed by Arunav Sanyal
parent c6fcd96e18
commit 90e25026f7
5 changed files with 103 additions and 0 deletions

View File

@ -59,6 +59,10 @@ All notable changes to this project will be documented in this file.
11. **UIImage**
- `var base64: String` in [[PR]](https://github.com/goktugyil/EZSwiftExtensions/pull/363) by *lfarah*## [Version 1.8]
12. **UIStackView**
- `addArrangedSubviews(_ views: UIView...)` in [[PR]](https://github.com/goktugyil/EZSwiftExtensions/pull/396) by *kirakik*
- `init(distribution: UIStackViewDistribution, alignment: UIStackViewAlignment, axis: UILayoutConstraintAxis, spacing: CGFloat)` in [[PR]](https://github.com/goktugyil/EZSwiftExtensions/pull/396) by *kirakik*
### Fixed bugs
1. **Array:**

View File

@ -211,6 +211,10 @@
FADFAA5D1D9D787D00CF9F7A /* FloatingPointTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FADFAA5B1D9D787D00CF9F7A /* FloatingPointTests.swift */; };
FADFAA631D9D8C2F00CF9F7A /* FloatingPointExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FADFAA621D9D8C2F00CF9F7A /* FloatingPointExtensions.swift */; };
FADFAA641D9D8C3E00CF9F7A /* FloatingPointExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FADFAA621D9D8C2F00CF9F7A /* FloatingPointExtensions.swift */; };
FFA538CC1E75D69F0093552E /* UIStackViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFA538CB1E75D69F0093552E /* UIStackViewExtensions.swift */; };
FFA538CD1E75D69F0093552E /* UIStackViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFA538CB1E75D69F0093552E /* UIStackViewExtensions.swift */; };
FFA538D21E75D7150093552E /* UIStackViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFA538CE1E75D6B90093552E /* UIStackViewTests.swift */; };
FFA538D31E75D7160093552E /* UIStackViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFA538CE1E75D6B90093552E /* UIStackViewTests.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@ -337,6 +341,8 @@
E1F21CB41CB55CDA004A01A4 /* EZSwiftFunctions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EZSwiftFunctions.swift; sourceTree = "<group>"; };
FADFAA5B1D9D787D00CF9F7A /* FloatingPointTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FloatingPointTests.swift; sourceTree = "<group>"; };
FADFAA621D9D8C2F00CF9F7A /* FloatingPointExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FloatingPointExtensions.swift; sourceTree = "<group>"; };
FFA538CB1E75D69F0093552E /* UIStackViewExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = UIStackViewExtensions.swift; path = ../EZSwiftExtensions/UIStackViewExtensions.swift; sourceTree = "<group>"; };
FFA538CE1E75D6B90093552E /* UIStackViewTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIStackViewTests.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -444,6 +450,7 @@
E10A79781D6F65AF00735549 /* UIImageViewTests.swift */,
E10A79791D6F65AF00735549 /* UILabelTests.swift */,
E10A797A1D6F65AF00735549 /* UISliderTests.swift */,
FFA538CE1E75D6B90093552E /* UIStackViewTests.swift */,
E10A797B1D6F65AF00735549 /* UIStoryboardTests.swift */,
E10A797C1D6F65AF00735549 /* UISwitchTests.swift */,
E10A797D1D6F65AF00735549 /* UITextFieldTests.swift */,
@ -502,6 +509,7 @@
B5DC87171C0ED34300972D0A /* UIImageViewExtensions.swift */,
B5DC87181C0ED34300972D0A /* UILabelExtensions.swift */,
E178781B1C8678AA00BC05AA /* UISliderExtensions.swift */,
FFA538CB1E75D69F0093552E /* UIStackViewExtensions.swift */,
E10A79451D6F506400735549 /* UIStoryboardExtensions.swift */,
E1587FB11CCA420400A0B071 /* UISwitchExtensions.swift */,
8889A85A1D20E8D500635002 /* UITextFieldExtensions.swift */,
@ -747,6 +755,7 @@
B5DC87241C0ED34300972D0A /* BoolExtensions.swift in Sources */,
B5DC87251C0ED34300972D0A /* CGFloatExtensions.swift in Sources */,
5A3292F01DC5BA6F0078F7F3 /* CGPointExtensions.swift in Sources */,
FFA538CC1E75D69F0093552E /* UIStackViewExtensions.swift in Sources */,
B5DC87261C0ED34300972D0A /* CGRectExtensions.swift in Sources */,
B5DC87271C0ED34300972D0A /* DictionaryExtensions.swift in Sources */,
B5DC87291C0ED34300972D0A /* IntExtensions.swift in Sources */,
@ -792,6 +801,7 @@
7605D3131C81FC180046FAC3 /* BlockButtonTests.swift in Sources */,
7605D3121C81FC180046FAC3 /* ArrayTests.swift in Sources */,
79AB4F2E1D03394F009183EC /* NSDictionaryExtensions.swift in Sources */,
FFA538D21E75D7150093552E /* UIStackViewTests.swift in Sources */,
E10A79571D6F5F3A00735549 /* BlockPanTests.swift in Sources */,
E10A79631D6F62DF00735549 /* BlockWebViewTests.swift in Sources */,
E10A795F1D6F62DF00735549 /* BlockSwipeTests.swift in Sources */,
@ -881,6 +891,7 @@
CD4D30D71CEEAFD900CB53BC /* UILabelExtensions.swift in Sources */,
E10A79381D6F4E1A00735549 /* UIBarButtonItemExtensions.swift in Sources */,
CD4D30D81CEEAFD900CB53BC /* UITextViewExtensions.swift in Sources */,
FFA538CD1E75D69F0093552E /* UIStackViewExtensions.swift in Sources */,
CD4D30D91CEEAFD900CB53BC /* UIViewControllerExtensions.swift in Sources */,
CD4D30DA1CEEAFD900CB53BC /* UIViewExtensions.swift in Sources */,
);
@ -913,6 +924,7 @@
E10A79A61D6F65AF00735549 /* UIFontTests.swift in Sources */,
E10A79B21D6F65AF00735549 /* UISwitchTests.swift in Sources */,
CD4D31521CEEB9EA00CB53BC /* IntTests.swift in Sources */,
FFA538D31E75D7160093552E /* UIStackViewTests.swift in Sources */,
E10A79B41D6F65AF00735549 /* UITextFieldTests.swift in Sources */,
E10A79921D6F65AF00735549 /* NSObjectTests.swift in Sources */,
E10A79961D6F65AF00735549 /* UserDefaultTests.swift in Sources */,

View File

@ -0,0 +1,42 @@
//
// UIStackViewExtensions.swift
// EZSwiftExtensionsExample
//
// Created by Kenza Iraki on 2017-03-12.
// Copyright © 2017 Goktug Yilmaz. All rights reserved.
//
import UIKit
@available(iOS 9.0, *)
extension UIStackView {
/// EZSwiftExtensions: Convenience initializer in order to directly pass the distribution, alignment, axis and spacing of the stack view.
///
/// - Parameters:
/// - distribution: the distribution of the stack view
/// - alignment: the alignment of the stack view
/// - axis: the axis (e.g. horizontal or vertical)
/// - spacing: spacing between subviews, default is 0
public convenience init(distribution: UIStackViewDistribution,
alignment: UIStackViewAlignment,
axis: UILayoutConstraintAxis,
spacing: CGFloat = 0) {
self.init()
self.distribution = distribution
self.alignment = alignment
self.axis = axis
self.spacing = spacing
}
/// EZSwiftExtensions: Add multiple subviews at once. They will be added in order (top to bottom for a vertical stack view and left to right for a vertical stack view)
///
/// - Parameter views: array of views to add
public func addArrangedSubviews(_ views: UIView...) {
for view in views {
self.addArrangedSubview(view)
}
}
}

View File

@ -60,6 +60,7 @@
E1CB3C1C1C25FFA000DF77CD /* DoubleExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1CB3C1B1C25FFA000DF77CD /* DoubleExtensions.swift */; };
E1D7CDCE1CF8FFB3008E4C07 /* UIBarButtonItemExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D7CDCD1CF8FFB3008E4C07 /* UIBarButtonItemExtensions.swift */; };
FADFAA611D9D8BFE00CF9F7A /* FloatingPointExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FADFAA601D9D8BFE00CF9F7A /* FloatingPointExtensions.swift */; };
FFA538CA1E75D6700093552E /* UIStackViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFA538C91E75D6700093552E /* UIStackViewExtensions.swift */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
@ -118,6 +119,7 @@
E1CB3C1B1C25FFA000DF77CD /* DoubleExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = DoubleExtensions.swift; path = Sources/DoubleExtensions.swift; sourceTree = SOURCE_ROOT; };
E1D7CDCD1CF8FFB3008E4C07 /* UIBarButtonItemExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = UIBarButtonItemExtensions.swift; path = Sources/UIBarButtonItemExtensions.swift; sourceTree = SOURCE_ROOT; };
FADFAA601D9D8BFE00CF9F7A /* FloatingPointExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = FloatingPointExtensions.swift; path = ../Sources/FloatingPointExtensions.swift; sourceTree = "<group>"; };
FFA538C91E75D6700093552E /* UIStackViewExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIStackViewExtensions.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -172,6 +174,7 @@
E1839E191BF79974002212C6 /* UIImageViewExtensions.swift */,
E1839E1A1BF79974002212C6 /* UILabelExtensions.swift */,
E178781D1C8678F900BC05AA /* UISliderExtensions.swift */,
FFA538C91E75D6700093552E /* UIStackViewExtensions.swift */,
E10A79431D6F505900735549 /* UIStoryboardExtensions.swift */,
E1587FAF1CCA41F400A0B071 /* UISwitchExtensions.swift */,
E10A79361D6F4BDB00735549 /* UITextFieldExtensions.swift */,
@ -311,6 +314,7 @@
E1839E201BF79974002212C6 /* BlockLongPress.swift in Sources */,
E17878261C86863900BC05AA /* UIWindowExtensions.swift in Sources */,
E178781E1C8678F900BC05AA /* UISliderExtensions.swift in Sources */,
FFA538CA1E75D6700093552E /* UIStackViewExtensions.swift in Sources */,
E1839E381BF79974002212C6 /* UIViewControllerExtensions.swift in Sources */,
E15484E41CA2BD00003B030E /* ErrorTypeExtensions.swift in Sources */,
E1839E2A1BF79974002212C6 /* EZSwiftFunctions.swift in Sources */,

View File

@ -0,0 +1,41 @@
//
// UIStackViewTests.swift
// EZSwiftExtensions
//
// Created by Kenza Iraki on 2017-03-12.
// Copyright © 2017 Goktug Yilmaz. All rights reserved.
//
import XCTest
@testable import EZSwiftExtensions
class UIStackViewTests: XCTestCase {
var stackView: UIStackView!
override func setUp() {
super.setUp()
self.stackView = UIStackView()
}
override func tearDown() {
super.tearDown()
}
func testConvenienceInit() {
let customInitSV = UIStackView(distribution: .fill,
alignment: .center,
axis: .vertical,
spacing: 5)
XCTAssertEqual(customInitSV.distribution, .fill)
XCTAssertEqual(customInitSV.alignment, .center)
XCTAssertEqual(customInitSV.axis, .vertical)
XCTAssertEqual(customInitSV.spacing, 5)
}
func testAddSubviews() {
stackView.addArrangedSubviews(UIView(), UIView(), UIView(), UIView())
XCTAssertEqual(stackView.subviews.count, 4)
}
}