diff --git a/.gitignore b/.gitignore index 8615121..49f5752 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,5 @@ DerivedData # Carthage/Checkouts Carthage/Build + +.DS_Store diff --git a/TZStackView.podspec b/TZStackView.podspec index 56e334e..410dde2 100644 --- a/TZStackView.podspec +++ b/TZStackView.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "TZStackView" - s.version = "1.2.0" + s.version = "1.3.0" s.summary = "TZStackView is a replica of iOS 9's new UIStackView for use in iOS 7 and iOS 8" s.homepage = "https://github.com/tomvanzummeren/TZStackView.git" s.license = { :type => "MIT" } @@ -8,6 +8,6 @@ Pod::Spec.new do |s| s.requires_arc = true s.ios.deployment_target = "8.0" - s.source = { :git => "https://github.com/tomvanzummeren/TZStackView.git", :tag => "1.2.0"} + s.source = { :git => "https://github.com/tomvanzummeren/TZStackView.git", :tag => "1.3.0"} s.source_files = "TZStackView/*.swift" end diff --git a/TZStackView.xcodeproj/project.pbxproj b/TZStackView.xcodeproj/project.pbxproj index b9e35a1..2b39c53 100644 --- a/TZStackView.xcodeproj/project.pbxproj +++ b/TZStackView.xcodeproj/project.pbxproj @@ -16,10 +16,10 @@ A45441C21B9B6D71002452BA /* TZStackView.h in Headers */ = {isa = PBXBuildFile; fileRef = A45441C11B9B6D71002452BA /* TZStackView.h */; settings = {ATTRIBUTES = (Public, ); }; }; A45441C61B9B6D71002452BA /* TZStackView.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A45441BF1B9B6D71002452BA /* TZStackView.framework */; }; A45441C71B9B6D71002452BA /* TZStackView.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = A45441BF1B9B6D71002452BA /* TZStackView.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - A45441D01B9B6D9C002452BA /* TZSpacerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A45441CC1B9B6D9C002452BA /* TZSpacerView.swift */; settings = {ASSET_TAGS = (); }; }; - A45441D11B9B6D9C002452BA /* TZStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A45441CD1B9B6D9C002452BA /* TZStackView.swift */; settings = {ASSET_TAGS = (); }; }; - A45441D21B9B6D9C002452BA /* TZStackViewAlignment.swift in Sources */ = {isa = PBXBuildFile; fileRef = A45441CE1B9B6D9C002452BA /* TZStackViewAlignment.swift */; settings = {ASSET_TAGS = (); }; }; - A45441D31B9B6D9C002452BA /* TZStackViewDistribution.swift in Sources */ = {isa = PBXBuildFile; fileRef = A45441CF1B9B6D9C002452BA /* TZStackViewDistribution.swift */; settings = {ASSET_TAGS = (); }; }; + A45441D01B9B6D9C002452BA /* TZSpacerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A45441CC1B9B6D9C002452BA /* TZSpacerView.swift */; }; + A45441D11B9B6D9C002452BA /* TZStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A45441CD1B9B6D9C002452BA /* TZStackView.swift */; }; + A45441D21B9B6D9C002452BA /* TZStackViewAlignment.swift in Sources */ = {isa = PBXBuildFile; fileRef = A45441CE1B9B6D9C002452BA /* TZStackViewAlignment.swift */; }; + A45441D31B9B6D9C002452BA /* TZStackViewDistribution.swift in Sources */ = {isa = PBXBuildFile; fileRef = A45441CF1B9B6D9C002452BA /* TZStackViewDistribution.swift */; }; DB41AF6A1B294B8E003DB902 /* NSLayoutConstraintExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB41AF691B294B8E003DB902 /* NSLayoutConstraintExtension.swift */; }; DB5B70851B2A1963006043BD /* TestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB5B70841B2A1963006043BD /* TestView.swift */; }; DB5B70871B2B8816006043BD /* TZStackViewTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB5B70861B2B8816006043BD /* TZStackViewTestCase.swift */; }; @@ -264,11 +264,18 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 0700; + LastUpgradeCheck = 0800; ORGANIZATIONNAME = "Tom van Zummeren"; TargetAttributes = { + 5F50E36345E94CFC65ED7270 = { + LastSwiftMigration = 0800; + }; + 5F50EF63134E65D95D5312EE = { + LastSwiftMigration = 0800; + }; A45441BE1B9B6D71002452BA = { CreatedOnToolsVersion = 7.0; + LastSwiftMigration = 0800; }; }; }; @@ -380,8 +387,10 @@ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -409,6 +418,7 @@ ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; }; name = Debug; }; @@ -425,8 +435,10 @@ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -445,6 +457,8 @@ IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 3.0; VALIDATE_PRODUCT = YES; }; name = Release; @@ -452,8 +466,8 @@ 5F50E2E44E5144E17840C724 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - EMBEDDED_CONTENT_CONTAINS_SWIFT = YES; INFOPLIST_FILE = TZStackViewDemo/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "nl.tomvanzummeren.$(PRODUCT_NAME:rfc1034identifier)"; @@ -465,10 +479,6 @@ isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/TZStackViewDemo.app/TZStackViewDemo"; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - ); INFOPLIST_FILE = TZStackViewTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "nl.tomvanzummeren.$(PRODUCT_NAME:rfc1034identifier)"; @@ -481,10 +491,6 @@ isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/TZStackViewDemo.app/TZStackViewDemo"; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - ); INFOPLIST_FILE = TZStackViewTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "nl.tomvanzummeren.$(PRODUCT_NAME:rfc1034identifier)"; @@ -496,8 +502,8 @@ 5F50ECFE01A29CC56EA94F02 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - EMBEDDED_CONTENT_CONTAINS_SWIFT = YES; INFOPLIST_FILE = TZStackViewDemo/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "nl.tomvanzummeren.$(PRODUCT_NAME:rfc1034identifier)"; @@ -509,6 +515,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; @@ -523,6 +530,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -533,6 +541,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -545,6 +554,7 @@ PRODUCT_BUNDLE_IDENTIFIER = nl.tomvanzummeren.TZStackView; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; diff --git a/TZStackView.xcodeproj/xcshareddata/xcschemes/TZStackView.xcscheme b/TZStackView.xcodeproj/xcshareddata/xcschemes/TZStackView.xcscheme index 2a5be9e..165c1b2 100644 --- a/TZStackView.xcodeproj/xcshareddata/xcschemes/TZStackView.xcscheme +++ b/TZStackView.xcodeproj/xcshareddata/xcschemes/TZStackView.xcscheme @@ -1,6 +1,6 @@ return lhs.view === rhs.view } -public class TZStackView: UIView { +open class TZStackView: UIView { - public var distribution: TZStackViewDistribution = .Fill { + open var distribution: TZStackViewDistribution = .fill { didSet { setNeedsUpdateConstraints() } } - public var axis: UILayoutConstraintAxis = .Horizontal { + open var axis: UILayoutConstraintAxis = .horizontal { didSet { setNeedsUpdateConstraints() } } - public var alignment: TZStackViewAlignment = .Fill + open var alignment: TZStackViewAlignment = .fill - public var spacing: CGFloat = 0 + open var spacing: CGFloat = 0 - public var layoutMarginsRelativeArrangement = false + open var layoutMarginsRelativeArrangement = false - public private(set) var arrangedSubviews: [UIView] = [] { + open private(set) var arrangedSubviews: [UIView] = [] { didSet { setNeedsUpdateConstraints() registerHiddenListeners(oldValue) @@ -58,7 +58,7 @@ public class TZStackView: UIView { private var animatingToHiddenViews = [UIView]() public init(arrangedSubviews: [UIView] = []) { - super.init(frame: CGRectZero) + super.init(frame: CGRect.zero) for arrangedSubview in arrangedSubviews { arrangedSubview.translatesAutoresizingMaskIntoConstraints = false addSubview(arrangedSubview) @@ -73,7 +73,7 @@ public class TZStackView: UIView { { self.arrangedSubviews = [] }() } - private func registerHiddenListeners(previousArrangedSubviews: [UIView]) { + private func registerHiddenListeners(_ previousArrangedSubviews: [UIView]) { for subview in previousArrangedSubviews { self.removeHiddenListener(subview) } @@ -83,22 +83,22 @@ public class TZStackView: UIView { } } - private func addHiddenListener(view: UIView) { - view.addObserver(self, forKeyPath: "hidden", options: [.Old, .New], context: &kvoContext) + private func addHiddenListener(_ view: UIView) { + view.addObserver(self, forKeyPath: "hidden", options: [.old, .new], context: &kvoContext) registeredKvoSubviews.append(view) } - private func removeHiddenListener(view: UIView) { - if let index = registeredKvoSubviews.indexOf(view) { + private func removeHiddenListener(_ view: UIView) { + if let index = registeredKvoSubviews.index(of: view) { view.removeObserver(self, forKeyPath: "hidden", context: &kvoContext) - registeredKvoSubviews.removeAtIndex(index) + registeredKvoSubviews.remove(at: index) } } - public override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer) { - if let view = object as? UIView, change = change where keyPath == "hidden" { - let hidden = view.hidden - let previousValue = change["old"] as! Bool + open override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { + if let view = object as? UIView, let change = change, keyPath == "hidden" { + let hidden = view.isHidden + let previousValue = change[NSKeyValueChangeKey.oldKey] as! Bool if hidden == previousValue { return } @@ -111,22 +111,22 @@ public class TZStackView: UIView { layoutIfNeeded() removeHiddenListener(view) - view.hidden = false + view.isHidden = false if let _ = view.layer.animationKeys() { UIView.setAnimationDelegate(self) - animationDidStopQueueEntries.insert(TZAnimationDidStopQueueEntry(view: view, hidden: hidden), atIndex: 0) - UIView.setAnimationDidStopSelector(#selector(TZStackView.hiddenAnimationStopped)) + animationDidStopQueueEntries.insert(TZAnimationDidStopQueueEntry(view: view, hidden: hidden), at: 0) + UIView.setAnimationDidStop(#selector(TZStackView.hiddenAnimationStopped)) } else { didFinishSettingHiddenValue(view, hidden: hidden) } } } - private func didFinishSettingHiddenValue(arrangedSubview: UIView, hidden: Bool) { - arrangedSubview.hidden = hidden - if let index = animatingToHiddenViews.indexOf(arrangedSubview) { - animatingToHiddenViews.removeAtIndex(index) + private func didFinishSettingHiddenValue(_ arrangedSubview: UIView, hidden: Bool) { + arrangedSubview.isHidden = hidden + if let index = animatingToHiddenViews.index(of: arrangedSubview) { + animatingToHiddenViews.remove(at: index) } addHiddenListener(arrangedSubview) } @@ -141,35 +141,35 @@ public class TZStackView: UIView { } } for entry in queueEntriesToRemove { - if let index = animationDidStopQueueEntries.indexOf(entry) { - animationDidStopQueueEntries.removeAtIndex(index) + if let index = animationDidStopQueueEntries.index(of: entry) { + animationDidStopQueueEntries.remove(at: index) } } } - public func addArrangedSubview(view: UIView) { + open func addArrangedSubview(_ view: UIView) { view.translatesAutoresizingMaskIntoConstraints = false addSubview(view) arrangedSubviews.append(view) } - public func removeArrangedSubview(view: UIView) { - if let index = arrangedSubviews.indexOf(view) { - arrangedSubviews.removeAtIndex(index) + open func removeArrangedSubview(_ view: UIView) { + if let index = arrangedSubviews.index(of: view) { + arrangedSubviews.remove(at: index) } } - public func insertArrangedSubview(view: UIView, atIndex stackIndex: Int) { + open func insertArrangedSubview(_ view: UIView, atIndex stackIndex: Int) { view.translatesAutoresizingMaskIntoConstraints = false addSubview(view) - arrangedSubviews.insert(view, atIndex: stackIndex) + arrangedSubviews.insert(view, at: stackIndex) } - override public func willRemoveSubview(subview: UIView) { + override open func willRemoveSubview(_ subview: UIView) { removeArrangedSubview(subview) } - override public func updateConstraints() { + override open func updateConstraints() { removeConstraints(stackViewConstraints) stackViewConstraints.removeAll() @@ -179,13 +179,13 @@ public class TZStackView: UIView { subviewConstraints.removeAll() for arrangedSubview in arrangedSubviews { - if alignment != .Fill { + if alignment != .fill { let guideConstraint: NSLayoutConstraint switch axis { - case .Horizontal: - guideConstraint = constraint(item: arrangedSubview, attribute: .Height, toItem: nil, attribute: .NotAnAttribute, constant: 0, priority: 25) - case .Vertical: - guideConstraint = constraint(item: arrangedSubview, attribute: .Width, toItem: nil, attribute: .NotAnAttribute, constant: 0, priority: 25) + case .horizontal: + guideConstraint = constraint(item: arrangedSubview, attribute: .height, toItem: nil, attribute: .notAnAttribute, constant: 0, priority: 25) + case .vertical: + guideConstraint = constraint(item: arrangedSubview, attribute: .width, toItem: nil, attribute: .notAnAttribute, constant: 0, priority: 25) } subviewConstraints.append(guideConstraint) arrangedSubview.addConstraint(guideConstraint) @@ -194,10 +194,10 @@ public class TZStackView: UIView { if isHidden(arrangedSubview) { let hiddenConstraint: NSLayoutConstraint switch axis { - case .Horizontal: - hiddenConstraint = constraint(item: arrangedSubview, attribute: .Width, toItem: nil, attribute: .NotAnAttribute, constant: 0) - case .Vertical: - hiddenConstraint = constraint(item: arrangedSubview, attribute: .Height, toItem: nil, attribute: .NotAnAttribute, constant: 0) + case .horizontal: + hiddenConstraint = constraint(item: arrangedSubview, attribute: .width, toItem: nil, attribute: .notAnAttribute, constant: 0) + case .vertical: + hiddenConstraint = constraint(item: arrangedSubview, attribute: .height, toItem: nil, attribute: .notAnAttribute, constant: 0) } subviewConstraints.append(hiddenConstraint) arrangedSubview.addConstraint(hiddenConstraint) @@ -214,27 +214,27 @@ public class TZStackView: UIView { let visibleArrangedSubviews = arrangedSubviews.filter({!self.isHidden($0)}) switch distribution { - case .FillEqually, .Fill, .FillProportionally: - if alignment != .Fill || layoutMarginsRelativeArrangement { + case .fillEqually, .fill, .fillProportionally: + if alignment != .fill || layoutMarginsRelativeArrangement { addSpacerView() } stackViewConstraints += createMatchEdgesContraints(arrangedSubviews) stackViewConstraints += createFirstAndLastViewMatchEdgesContraints() - if alignment == .FirstBaseline && axis == .Horizontal { - stackViewConstraints.append(constraint(item: self, attribute: .Height, toItem: nil, attribute: .NotAnAttribute, priority: 49)) + if alignment == .firstBaseline && axis == .horizontal { + stackViewConstraints.append(constraint(item: self, attribute: .height, toItem: nil, attribute: .notAnAttribute, priority: 49)) } - if distribution == .FillEqually { + if distribution == .fillEqually { stackViewConstraints += createFillEquallyConstraints(arrangedSubviews) } - if distribution == .FillProportionally { + if distribution == .fillProportionally { stackViewConstraints += createFillProportionallyConstraints(arrangedSubviews) } stackViewConstraints += createFillConstraints(arrangedSubviews, constant: spacing) - case .EqualSpacing: + case .equalSpacing: var views = [UIView]() var index = 0 for arrangedSubview in arrangedSubviews { @@ -255,20 +255,20 @@ public class TZStackView: UIView { stackViewConstraints += createFirstAndLastViewMatchEdgesContraints() switch axis { - case .Horizontal: - stackViewConstraints.append(constraint(item: self, attribute: .Width, toItem: nil, attribute: .NotAnAttribute, priority: 49)) - if alignment == .FirstBaseline { - stackViewConstraints.append(constraint(item: self, attribute: .Height, toItem: nil, attribute: .NotAnAttribute, priority: 49)) + case .horizontal: + stackViewConstraints.append(constraint(item: self, attribute: .width, toItem: nil, attribute: .notAnAttribute, priority: 49)) + if alignment == .firstBaseline { + stackViewConstraints.append(constraint(item: self, attribute: .height, toItem: nil, attribute: .notAnAttribute, priority: 49)) } - case .Vertical: - stackViewConstraints.append(constraint(item: self, attribute: .Height, toItem: nil, attribute: .NotAnAttribute, priority: 49)) + case .vertical: + stackViewConstraints.append(constraint(item: self, attribute: .height, toItem: nil, attribute: .notAnAttribute, priority: 49)) } stackViewConstraints += createFillConstraints(views, constant: 0) stackViewConstraints += createFillEquallyConstraints(spacerViews) - stackViewConstraints += createFillConstraints(arrangedSubviews, relatedBy: .GreaterThanOrEqual, constant: spacing) - case .EqualCentering: - for (index, _) in visibleArrangedSubviews.enumerate() { + stackViewConstraints += createFillConstraints(arrangedSubviews, relatedBy: .greaterThanOrEqual, constant: spacing) + case .equalCentering: + for (index, _) in visibleArrangedSubviews.enumerated() { if index > 0 { addSpacerView() } @@ -281,34 +281,34 @@ public class TZStackView: UIView { stackViewConstraints += createFirstAndLastViewMatchEdgesContraints() switch axis { - case .Horizontal: - stackViewConstraints.append(constraint(item: self, attribute: .Width, toItem: nil, attribute: .NotAnAttribute, priority: 49)) - if alignment == .FirstBaseline { - stackViewConstraints.append(constraint(item: self, attribute: .Height, toItem: nil, attribute: .NotAnAttribute, priority: 49)) + case .horizontal: + stackViewConstraints.append(constraint(item: self, attribute: .width, toItem: nil, attribute: .notAnAttribute, priority: 49)) + if alignment == .firstBaseline { + stackViewConstraints.append(constraint(item: self, attribute: .height, toItem: nil, attribute: .notAnAttribute, priority: 49)) } - case .Vertical: - stackViewConstraints.append(constraint(item: self, attribute: .Height, toItem: nil, attribute: .NotAnAttribute, priority: 49)) + case .vertical: + stackViewConstraints.append(constraint(item: self, attribute: .height, toItem: nil, attribute: .notAnAttribute, priority: 49)) } var previousArrangedSubview: UIView? - for (index, arrangedSubview) in visibleArrangedSubviews.enumerate() { + for (index, arrangedSubview) in visibleArrangedSubviews.enumerated() { if let previousArrangedSubview = previousArrangedSubview { let spacerView = spacerViews[index - 1] switch axis { - case .Horizontal: - stackViewConstraints.append(constraint(item: previousArrangedSubview, attribute: .CenterX, toItem: spacerView, attribute: .Leading)) - stackViewConstraints.append(constraint(item: arrangedSubview, attribute: .CenterX, toItem: spacerView, attribute: .Trailing)) - case .Vertical: - stackViewConstraints.append(constraint(item: previousArrangedSubview, attribute: .CenterY, toItem: spacerView, attribute: .Top)) - stackViewConstraints.append(constraint(item: arrangedSubview, attribute: .CenterY, toItem: spacerView, attribute: .Bottom)) + case .horizontal: + stackViewConstraints.append(constraint(item: previousArrangedSubview, attribute: .centerX, toItem: spacerView, attribute: .leading)) + stackViewConstraints.append(constraint(item: arrangedSubview, attribute: .centerX, toItem: spacerView, attribute: .trailing)) + case .vertical: + stackViewConstraints.append(constraint(item: previousArrangedSubview, attribute: .centerY, toItem: spacerView, attribute: .top)) + stackViewConstraints.append(constraint(item: arrangedSubview, attribute: .centerY, toItem: spacerView, attribute: .bottom)) } } previousArrangedSubview = arrangedSubview } stackViewConstraints += createFillEquallyConstraints(spacerViews, priority: 150) - stackViewConstraints += createFillConstraints(arrangedSubviews, relatedBy: .GreaterThanOrEqual, constant: spacing) + stackViewConstraints += createFillConstraints(arrangedSubviews, relatedBy: .greaterThanOrEqual, constant: spacing) } if spacerViews.count > 0 { @@ -317,10 +317,10 @@ public class TZStackView: UIView { if layoutMarginsRelativeArrangement { if spacerViews.count > 0 { - stackViewConstraints.append(constraint(item: self, attribute: .BottomMargin, toItem: spacerViews[0], attribute: .Bottom)) - stackViewConstraints.append(constraint(item: self, attribute: .LeftMargin, toItem: spacerViews[0], attribute: .Left)) - stackViewConstraints.append(constraint(item: self, attribute: .RightMargin, toItem: spacerViews[0], attribute: .Right)) - stackViewConstraints.append(constraint(item: self, attribute: .TopMargin, toItem: spacerViews[0], attribute: .Top)) + stackViewConstraints.append(constraint(item: self, attribute: .bottomMargin, toItem: spacerViews[0], attribute: .bottom)) + stackViewConstraints.append(constraint(item: self, attribute: .leftMargin, toItem: spacerViews[0], attribute: .left)) + stackViewConstraints.append(constraint(item: self, attribute: .rightMargin, toItem: spacerViews[0], attribute: .right)) + stackViewConstraints.append(constraint(item: self, attribute: .topMargin, toItem: spacerViews[0], attribute: .top)) } } addConstraints(stackViewConstraints) @@ -333,57 +333,57 @@ public class TZStackView: UIView { super.init(coder: aDecoder)! } - private func addSpacerView() -> TZSpacerView { + @discardableResult private func addSpacerView() -> TZSpacerView { let spacerView = TZSpacerView() spacerView.translatesAutoresizingMaskIntoConstraints = false spacerViews.append(spacerView) - insertSubview(spacerView, atIndex: 0) + insertSubview(spacerView, at: 0) return spacerView } - private func createSurroundingSpacerViewConstraints(spacerView: UIView, views: [UIView]) -> [NSLayoutConstraint] { - if alignment == .Fill { + private func createSurroundingSpacerViewConstraints(_ spacerView: UIView, views: [UIView]) -> [NSLayoutConstraint] { + if alignment == .fill { return [] } var topPriority: Float = 1000 - var topRelation: NSLayoutRelation = .LessThanOrEqual + var topRelation: NSLayoutRelation = .lessThanOrEqual var bottomPriority: Float = 1000 - var bottomRelation: NSLayoutRelation = .GreaterThanOrEqual + var bottomRelation: NSLayoutRelation = .greaterThanOrEqual - if alignment == .Top || alignment == .Leading { + if alignment == .top || alignment == .leading { topPriority = 999.5 - topRelation = .Equal + topRelation = .equal } - if alignment == .Bottom || alignment == .Trailing { + if alignment == .bottom || alignment == .trailing { bottomPriority = 999.5 - bottomRelation = .Equal + bottomRelation = .equal } var constraints = [NSLayoutConstraint]() for view in views { switch axis { - case .Horizontal: - constraints.append(constraint(item: spacerView, attribute: .Top, relatedBy: topRelation, toItem: view, priority: topPriority)) - constraints.append(constraint(item: spacerView, attribute: .Bottom, relatedBy: bottomRelation, toItem: view, priority: bottomPriority)) - case .Vertical: - constraints.append(constraint(item: spacerView, attribute: .Leading, relatedBy: topRelation, toItem: view, priority: topPriority)) - constraints.append(constraint(item: spacerView, attribute: .Trailing, relatedBy: bottomRelation, toItem: view, priority: bottomPriority)) + case .horizontal: + constraints.append(constraint(item: spacerView, attribute: .top, relatedBy: topRelation, toItem: view, priority: topPriority)) + constraints.append(constraint(item: spacerView, attribute: .bottom, relatedBy: bottomRelation, toItem: view, priority: bottomPriority)) + case .vertical: + constraints.append(constraint(item: spacerView, attribute: .leading, relatedBy: topRelation, toItem: view, priority: topPriority)) + constraints.append(constraint(item: spacerView, attribute: .trailing, relatedBy: bottomRelation, toItem: view, priority: bottomPriority)) } } switch axis { - case .Horizontal: - constraints.append(constraint(item: spacerView, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, constant: 0, priority: 51)) - case .Vertical: - constraints.append(constraint(item: spacerView, attribute: .Width, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, constant: 0, priority: 51)) + case .horizontal: + constraints.append(constraint(item: spacerView, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, constant: 0, priority: 51)) + case .vertical: + constraints.append(constraint(item: spacerView, attribute: .width, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, constant: 0, priority: 51)) } return constraints } - private func createFillProportionallyConstraints(views: [UIView]) -> [NSLayoutConstraint] { + private func createFillProportionallyConstraints(_ views: [UIView]) -> [NSLayoutConstraint] { var constraints = [NSLayoutConstraint]() var totalSize: CGFloat = 0 @@ -393,10 +393,10 @@ public class TZStackView: UIView { continue } switch axis { - case .Horizontal: - totalSize += arrangedSubview.intrinsicContentSize().width - case .Vertical: - totalSize += arrangedSubview.intrinsicContentSize().height + case .horizontal: + totalSize += arrangedSubview.intrinsicContentSize.width + case .vertical: + totalSize += arrangedSubview.intrinsicContentSize.height } totalCount += 1 } @@ -413,12 +413,12 @@ public class TZStackView: UIView { continue } switch axis { - case .Horizontal: - let multiplier = arrangedSubview.intrinsicContentSize().width / totalSize - constraints.append(constraint(item: arrangedSubview, attribute: .Width, toItem: self, multiplier: multiplier, priority: priority)) - case .Vertical: - let multiplier = arrangedSubview.intrinsicContentSize().height / totalSize - constraints.append(constraint(item: arrangedSubview, attribute: .Height, toItem: self, multiplier: multiplier, priority: priority)) + case .horizontal: + let multiplier = arrangedSubview.intrinsicContentSize.width / totalSize + constraints.append(constraint(item: arrangedSubview, attribute: .width, toItem: self, multiplier: multiplier, priority: priority)) + case .vertical: + let multiplier = arrangedSubview.intrinsicContentSize.height / totalSize + constraints.append(constraint(item: arrangedSubview, attribute: .height, toItem: self, multiplier: multiplier, priority: priority)) } } @@ -426,18 +426,18 @@ public class TZStackView: UIView { } // Matchs all Width or Height attributes of all given views - private func createFillEquallyConstraints(views: [UIView], priority: Float = 1000) -> [NSLayoutConstraint] { + private func createFillEquallyConstraints(_ views: [UIView], priority: Float = 1000) -> [NSLayoutConstraint] { switch axis { - case .Horizontal: - return equalAttributes(views: views.filter({ !self.isHidden($0) }), attribute: .Width, priority: priority) + case .horizontal: + return equalAttributes(views: views.filter({ !self.isHidden($0) }), attribute: .width, priority: priority) - case .Vertical: - return equalAttributes(views: views.filter({ !self.isHidden($0) }), attribute: .Height, priority: priority) + case .vertical: + return equalAttributes(views: views.filter({ !self.isHidden($0) }), attribute: .height, priority: priority) } } // Chains together the given views using Leading/Trailing or Top/Bottom - private func createFillConstraints(views: [UIView], priority: Float = 1000, relatedBy relation: NSLayoutRelation = .Equal, constant: CGFloat) -> [NSLayoutConstraint] { + private func createFillConstraints(_ views: [UIView], priority: Float = 1000, relatedBy relation: NSLayoutRelation = .equal, constant: CGFloat) -> [NSLayoutConstraint] { var constraints = [NSLayoutConstraint]() var previousView: UIView? @@ -452,11 +452,11 @@ public class TZStackView: UIView { c = (constant / 2) } switch axis { - case .Horizontal: - constraints.append(constraint(item: view, attribute: .Leading, relatedBy: relation, toItem: previousView, attribute: .Trailing, constant: c, priority: priority)) + case .horizontal: + constraints.append(constraint(item: view, attribute: .leading, relatedBy: relation, toItem: previousView, attribute: .trailing, constant: c, priority: priority)) - case .Vertical: - constraints.append(constraint(item: view, attribute: .Top, relatedBy: relation, toItem: previousView, attribute: .Bottom, constant: c, priority: priority)) + case .vertical: + constraints.append(constraint(item: view, attribute: .top, relatedBy: relation, toItem: previousView, attribute: .bottom, constant: c, priority: priority)) } } previousView = view @@ -465,37 +465,37 @@ public class TZStackView: UIView { } // Matches all Bottom/Top or Leading Trailing constraints of te given views and matches those attributes of the first/last view to the container - private func createMatchEdgesContraints(views: [UIView]) -> [NSLayoutConstraint] { + private func createMatchEdgesContraints(_ views: [UIView]) -> [NSLayoutConstraint] { var constraints = [NSLayoutConstraint]() switch axis { - case .Horizontal: + case .horizontal: switch alignment { - case .Fill: - constraints += equalAttributes(views: views, attribute: .Bottom) - constraints += equalAttributes(views: views, attribute: .Top) - case .Center: - constraints += equalAttributes(views: views, attribute: .CenterY) - case .Leading, .Top: - constraints += equalAttributes(views: views, attribute: .Top) - case .Trailing, .Bottom: - constraints += equalAttributes(views: views, attribute: .Bottom) - case .FirstBaseline: - constraints += equalAttributes(views: views, attribute: .FirstBaseline) + case .fill: + constraints += equalAttributes(views: views, attribute: .bottom) + constraints += equalAttributes(views: views, attribute: .top) + case .center: + constraints += equalAttributes(views: views, attribute: .centerY) + case .leading, .top: + constraints += equalAttributes(views: views, attribute: .top) + case .trailing, .bottom: + constraints += equalAttributes(views: views, attribute: .bottom) + case .firstBaseline: + constraints += equalAttributes(views: views, attribute: .firstBaseline) } - case .Vertical: + case .vertical: switch alignment { - case .Fill: - constraints += equalAttributes(views: views, attribute: .Leading) - constraints += equalAttributes(views: views, attribute: .Trailing) - case .Center: - constraints += equalAttributes(views: views, attribute: .CenterX) - case .Leading, .Top: - constraints += equalAttributes(views: views, attribute: .Leading) - case .Trailing, .Bottom: - constraints += equalAttributes(views: views, attribute: .Trailing) - case .FirstBaseline: + case .fill: + constraints += equalAttributes(views: views, attribute: .leading) + constraints += equalAttributes(views: views, attribute: .trailing) + case .center: + constraints += equalAttributes(views: views, attribute: .centerX) + case .leading, .top: + constraints += equalAttributes(views: views, attribute: .leading) + case .trailing, .bottom: + constraints += equalAttributes(views: views, attribute: .trailing) + case .firstBaseline: constraints += [] } } @@ -513,18 +513,18 @@ public class TZStackView: UIView { var topView = arrangedSubviews.first! var bottomView = arrangedSubviews.first! if spacerViews.count > 0 { - if alignment == .Center { + if alignment == .center { topView = spacerViews[0] bottomView = spacerViews[0] - } else if alignment == .Top || alignment == .Leading { + } else if alignment == .top || alignment == .leading { bottomView = spacerViews[0] - } else if alignment == .Bottom || alignment == .Trailing { + } else if alignment == .bottom || alignment == .trailing { topView = spacerViews[0] - } else if alignment == .FirstBaseline { + } else if alignment == .firstBaseline { switch axis { - case .Horizontal: + case .horizontal: bottomView = spacerViews[0] - case .Vertical: + case .vertical: topView = spacerViews[0] bottomView = spacerViews[0] } @@ -534,40 +534,40 @@ public class TZStackView: UIView { let firstItem = layoutMarginsRelativeArrangement ? spacerViews[0] : self switch axis { - case .Horizontal: + case .horizontal: if let firstView = firstView { - constraints.append(constraint(item: firstItem, attribute: .Leading, toItem: firstView)) + constraints.append(constraint(item: firstItem, attribute: .leading, toItem: firstView)) } if let lastView = lastView { - constraints.append(constraint(item: firstItem, attribute: .Trailing, toItem: lastView)) + constraints.append(constraint(item: firstItem, attribute: .trailing, toItem: lastView)) } - constraints.append(constraint(item: firstItem, attribute: .Top, toItem: topView)) - constraints.append(constraint(item: firstItem, attribute: .Bottom, toItem: bottomView)) + constraints.append(constraint(item: firstItem, attribute: .top, toItem: topView)) + constraints.append(constraint(item: firstItem, attribute: .bottom, toItem: bottomView)) - if alignment == .Center { - constraints.append(constraint(item: firstItem, attribute: .CenterY, toItem: arrangedSubviews.first!)) + if alignment == .center { + constraints.append(constraint(item: firstItem, attribute: .centerY, toItem: arrangedSubviews.first!)) } - case .Vertical: + case .vertical: if let firstView = firstView { - constraints.append(constraint(item: firstItem, attribute: .Top, toItem: firstView)) + constraints.append(constraint(item: firstItem, attribute: .top, toItem: firstView)) } if let lastView = lastView { - constraints.append(constraint(item: firstItem, attribute: .Bottom, toItem: lastView)) + constraints.append(constraint(item: firstItem, attribute: .bottom, toItem: lastView)) } - constraints.append(constraint(item: firstItem, attribute: .Leading, toItem: topView)) - constraints.append(constraint(item: firstItem, attribute: .Trailing, toItem: bottomView)) + constraints.append(constraint(item: firstItem, attribute: .leading, toItem: topView)) + constraints.append(constraint(item: firstItem, attribute: .trailing, toItem: bottomView)) - if alignment == .Center { - constraints.append(constraint(item: firstItem, attribute: .CenterX, toItem: arrangedSubviews.first!)) + if alignment == .center { + constraints.append(constraint(item: firstItem, attribute: .centerX, toItem: arrangedSubviews.first!)) } } return constraints } - private func equalAttributes(views views: [UIView], attribute: NSLayoutAttribute, priority: Float = 1000) -> [NSLayoutConstraint] { + private func equalAttributes(views: [UIView], attribute: NSLayoutAttribute, priority: Float = 1000) -> [NSLayoutConstraint] { var currentPriority = priority var constraints = [NSLayoutConstraint]() if views.count > 0 { @@ -590,7 +590,7 @@ public class TZStackView: UIView { } // Convenience method to help make NSLayoutConstraint in a less verbose way - private func constraint(item view1: AnyObject, attribute attr1: NSLayoutAttribute, relatedBy relation: NSLayoutRelation = .Equal, toItem view2: AnyObject?, attribute attr2: NSLayoutAttribute? = nil, multiplier: CGFloat = 1, constant c: CGFloat = 0, priority: Float = 1000) -> NSLayoutConstraint { + private func constraint(item view1: AnyObject, attribute attr1: NSLayoutAttribute, relatedBy relation: NSLayoutRelation = .equal, toItem view2: AnyObject?, attribute attr2: NSLayoutAttribute? = nil, multiplier: CGFloat = 1, constant c: CGFloat = 0, priority: Float = 1000) -> NSLayoutConstraint { let attribute2 = attr2 != nil ? attr2! : attr1 @@ -599,10 +599,10 @@ public class TZStackView: UIView { return constraint } - private func isHidden(view: UIView) -> Bool { - if view.hidden { + private func isHidden(_ view: UIView) -> Bool { + if view.isHidden { return true } - return animatingToHiddenViews.indexOf(view) != nil + return animatingToHiddenViews.index(of: view) != nil } } diff --git a/TZStackView/TZStackViewAlignment.swift b/TZStackView/TZStackViewAlignment.swift index f99594f..394ffd9 100644 --- a/TZStackView/TZStackViewAlignment.swift +++ b/TZStackView/TZStackViewAlignment.swift @@ -9,11 +9,11 @@ import Foundation @objc public enum TZStackViewAlignment: Int { - case Fill - case Center - case Leading - case Top - case Trailing - case Bottom - case FirstBaseline + case fill + case center + case leading + case top + case trailing + case bottom + case firstBaseline } diff --git a/TZStackView/TZStackViewDistribution.swift b/TZStackView/TZStackViewDistribution.swift index 0802276..127e445 100644 --- a/TZStackView/TZStackViewDistribution.swift +++ b/TZStackView/TZStackViewDistribution.swift @@ -8,9 +8,9 @@ import Foundation @objc public enum TZStackViewDistribution: Int { - case Fill - case FillEqually - case FillProportionally - case EqualSpacing - case EqualCentering + case fill + case fillEqually + case fillProportionally + case equalSpacing + case equalCentering } diff --git a/TZStackViewDemo/AppDelegate.swift b/TZStackViewDemo/AppDelegate.swift index a90c5ac..57fc143 100644 --- a/TZStackViewDemo/AppDelegate.swift +++ b/TZStackViewDemo/AppDelegate.swift @@ -14,14 +14,14 @@ class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? - func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { //Appearance proxy for the UISegmentedControl font UISegmentedControl.appearance().setTitleTextAttributes( [NSFontAttributeName:UIFont(name: "HelveticaNeue-Light", size:10.0)!], - forState: UIControlState.Normal) + for: UIControlState()) //Launch the application - window = UIWindow(frame: UIScreen.mainScreen().bounds) + window = UIWindow(frame: UIScreen.main.bounds) window?.rootViewController = ViewController() window?.makeKeyAndVisible() return true diff --git a/TZStackViewDemo/ExplicitIntrinsicContentSizeView.swift b/TZStackViewDemo/ExplicitIntrinsicContentSizeView.swift index 61ca222..0af9816 100644 --- a/TZStackViewDemo/ExplicitIntrinsicContentSizeView.swift +++ b/TZStackViewDemo/ExplicitIntrinsicContentSizeView.swift @@ -13,16 +13,16 @@ class ExplicitIntrinsicContentSizeView: UIView { init(intrinsicContentSize: CGSize, name: String) { self.name = name self.contentSize = intrinsicContentSize - super.init(frame: CGRectZero) + super.init(frame: CGRect.zero) let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(ExplicitIntrinsicContentSizeView.tap)) addGestureRecognizer(gestureRecognizer) - userInteractionEnabled = true + isUserInteractionEnabled = true } func tap() { - UIView.animateWithDuration(0.6, delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 0, options: .AllowUserInteraction, animations: { - self.hidden = true + UIView.animate(withDuration: 0.6, delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 0, options: .allowUserInteraction, animations: { + self.isHidden = true }, completion: nil) } @@ -30,7 +30,7 @@ class ExplicitIntrinsicContentSizeView: UIView { fatalError("init(coder:) has not been implemented") } - override func intrinsicContentSize() -> CGSize { + override var intrinsicContentSize : CGSize { return contentSize } diff --git a/TZStackViewDemo/NSLayoutConstraintExtension.swift b/TZStackViewDemo/NSLayoutConstraintExtension.swift index b494e01..07cf4d3 100644 --- a/TZStackViewDemo/NSLayoutConstraintExtension.swift +++ b/TZStackViewDemo/NSLayoutConstraintExtension.swift @@ -11,47 +11,47 @@ import UIKit extension NSLayoutConstraint { func readableString() -> String { - return "\(self.dynamicType)(\n item1: \(unwrap(firstItem)), firstAttribute: \(toString(firstAttribute))\n relation: \(toString(relation))\n secondItem: \(unwrap(secondItem)), secondAttribute: \(toString(secondAttribute))\n constant: \(constant)\n multiplier: \(multiplier)\n priority: \(priority)\n)" + return "\(type(of: self))(\n item1: \(unwrap(firstItem)), firstAttribute: \(toString(firstAttribute))\n relation: \(toString(relation))\n secondItem: \(unwrap(secondItem)), secondAttribute: \(toString(secondAttribute))\n constant: \(constant)\n multiplier: \(multiplier)\n priority: \(priority)\n)" } - private func unwrap(object: AnyObject?) -> String { + fileprivate func unwrap(_ object: AnyObject?) -> String { if let object = object { return "\(object)" } return "nil" } - private func toString(relation: NSLayoutRelation) -> String { + fileprivate func toString(_ relation: NSLayoutRelation) -> String { switch relation { - case .LessThanOrEqual: return "LessThanOrEqual" - case .Equal: return "Equal" - case .GreaterThanOrEqual: return "GreaterThanOrEqual" + case .lessThanOrEqual: return "LessThanOrEqual" + case .equal: return "Equal" + case .greaterThanOrEqual: return "GreaterThanOrEqual" } } - private func toString(attribute: NSLayoutAttribute) -> String { + fileprivate func toString(_ attribute: NSLayoutAttribute) -> String { switch attribute { - case .Left: return "Left" - case .Right: return "Right" - case .Top: return "Top" - case .Bottom: return "Bottom" - case .Leading: return "Leading" - case .Trailing: return "Trailing" - case .Width: return "Width" - case .Height: return "Height" - case .CenterX: return "CenterX" - case .CenterY: return "CenterY" - case .Baseline: return "Baseline" - case .FirstBaseline: return "FirstBaseline" - case .NotAnAttribute: return "NotAnAttribute" - case .LeftMargin: return "LeftMargin" - case .RightMargin: return "RightMargin" - case .TopMargin: return "TopMargin" - case .BottomMargin: return "BottomMargin" - case .LeadingMargin: return "LeadingMargin" - case .TrailingMargin: return "TrailingMargin" - case .CenterXWithinMargins: return "CenterXWithinMargins" - case .CenterYWithinMargins: return "CenterYWithinMargins" + case .left: return "Left" + case .right: return "Right" + case .top: return "Top" + case .bottom: return "Bottom" + case .leading: return "Leading" + case .trailing: return "Trailing" + case .width: return "Width" + case .height: return "Height" + case .centerX: return "CenterX" + case .centerY: return "CenterY" + case .lastBaseline: return "Baseline" + case .firstBaseline: return "FirstBaseline" + case .notAnAttribute: return "NotAnAttribute" + case .leftMargin: return "LeftMargin" + case .rightMargin: return "RightMargin" + case .topMargin: return "TopMargin" + case .bottomMargin: return "BottomMargin" + case .leadingMargin: return "LeadingMargin" + case .trailingMargin: return "TrailingMargin" + case .centerXWithinMargins: return "CenterXWithinMargins" + case .centerYWithinMargins: return "CenterYWithinMargins" } } -} \ No newline at end of file +} diff --git a/TZStackViewDemo/ViewController.swift b/TZStackViewDemo/ViewController.swift index 7fa9b18..9b4a57b 100644 --- a/TZStackViewDemo/ViewController.swift +++ b/TZStackViewDemo/ViewController.swift @@ -15,7 +15,7 @@ class ViewController: UIViewController { //-------------------------------------------------------------------------- var tzStackView: TZStackView! - let resetButton = UIButton(type: .System) + let resetButton = UIButton(type: .system) let instructionLabel = UILabel() var axisSegmentedControl: UISegmentedControl! @@ -26,58 +26,58 @@ class ViewController: UIViewController { //-------------------------------------------------------------------------- override func viewDidLoad() { super.viewDidLoad() - edgesForExtendedLayout = .None; + edgesForExtendedLayout = UIRectEdge(); - view.backgroundColor = UIColor.blackColor() + view.backgroundColor = UIColor.black title = "TZStackView" tzStackView = TZStackView(arrangedSubviews: createViews()) tzStackView.translatesAutoresizingMaskIntoConstraints = false - tzStackView.axis = .Vertical - tzStackView.distribution = .Fill - tzStackView.alignment = .Fill + tzStackView.axis = .vertical + tzStackView.distribution = .fill + tzStackView.alignment = .fill tzStackView.spacing = 15 view.addSubview(tzStackView) instructionLabel.translatesAutoresizingMaskIntoConstraints = false - instructionLabel.font = UIFont.systemFontOfSize(15) + instructionLabel.font = UIFont.systemFont(ofSize: 15) instructionLabel.text = "Tap any of the boxes to set hidden=true" - instructionLabel.textColor = UIColor.whiteColor() + instructionLabel.textColor = UIColor.white instructionLabel.numberOfLines = 0 - instructionLabel.setContentCompressionResistancePriority(900, forAxis: .Horizontal) - instructionLabel.setContentHuggingPriority(1000, forAxis: .Vertical) + instructionLabel.setContentCompressionResistancePriority(900, for: .horizontal) + instructionLabel.setContentHuggingPriority(1000, for: .vertical) view.addSubview(instructionLabel) resetButton.translatesAutoresizingMaskIntoConstraints = false - resetButton.setTitle("Reset", forState: .Normal) - resetButton.addTarget(self, action: #selector(ViewController.reset), forControlEvents: .TouchUpInside) - resetButton.setContentCompressionResistancePriority(1000, forAxis: .Horizontal) - resetButton.setContentHuggingPriority(1000, forAxis: .Horizontal) - resetButton.setContentHuggingPriority(1000, forAxis: .Vertical) + resetButton.setTitle("Reset", for: UIControlState()) + resetButton.addTarget(self, action: #selector(ViewController.reset), for: .touchUpInside) + resetButton.setContentCompressionResistancePriority(1000, for: .horizontal) + resetButton.setContentHuggingPriority(1000, for: .horizontal) + resetButton.setContentHuggingPriority(1000, for: .vertical) view.addSubview(resetButton) axisSegmentedControl = UISegmentedControl(items: ["Vertical", "Horizontal"]) axisSegmentedControl.selectedSegmentIndex = 0 - axisSegmentedControl.addTarget(self, action: #selector(ViewController.axisChanged(_:)), forControlEvents: .ValueChanged) - axisSegmentedControl.setContentCompressionResistancePriority(900, forAxis: .Horizontal) - axisSegmentedControl.tintColor = UIColor.lightGrayColor() + axisSegmentedControl.addTarget(self, action: #selector(ViewController.axisChanged(_:)), for: .valueChanged) + axisSegmentedControl.setContentCompressionResistancePriority(900, for: .horizontal) + axisSegmentedControl.tintColor = UIColor.lightGray alignmentSegmentedControl = UISegmentedControl(items: ["Fill", "Center", "Leading", "Top", "Trailing", "Bottom", "FirstBaseline"]) alignmentSegmentedControl.selectedSegmentIndex = 0 - alignmentSegmentedControl.addTarget(self, action: #selector(ViewController.alignmentChanged(_:)), forControlEvents: .ValueChanged) - alignmentSegmentedControl.setContentCompressionResistancePriority(1000, forAxis: .Horizontal) - alignmentSegmentedControl.tintColor = UIColor.lightGrayColor() + alignmentSegmentedControl.addTarget(self, action: #selector(ViewController.alignmentChanged(_:)), for: .valueChanged) + alignmentSegmentedControl.setContentCompressionResistancePriority(1000, for: .horizontal) + alignmentSegmentedControl.tintColor = UIColor.lightGray distributionSegmentedControl = UISegmentedControl(items: ["Fill", "FillEqually", "FillProportionally", "EqualSpacing", "EqualCentering"]) distributionSegmentedControl.selectedSegmentIndex = 0 - distributionSegmentedControl.addTarget(self, action: #selector(ViewController.distributionChanged(_:)), forControlEvents: .ValueChanged) - distributionSegmentedControl.tintColor = UIColor.lightGrayColor() + distributionSegmentedControl.addTarget(self, action: #selector(ViewController.distributionChanged(_:)), for: .valueChanged) + distributionSegmentedControl.tintColor = UIColor.lightGray let controlsLayoutContainer = TZStackView(arrangedSubviews: [axisSegmentedControl, alignmentSegmentedControl, distributionSegmentedControl]) - controlsLayoutContainer.axis = .Vertical + controlsLayoutContainer.axis = .vertical controlsLayoutContainer.translatesAutoresizingMaskIntoConstraints = false controlsLayoutContainer.spacing = 5 - controlsLayoutContainer.setContentHuggingPriority(1000, forAxis: .Vertical) + controlsLayoutContainer.setContentHuggingPriority(1000, for: .vertical) view.addSubview(controlsLayoutContainer) let views: [String:AnyObject] = [ @@ -88,44 +88,44 @@ class ViewController: UIViewController { ] let metrics: [String:AnyObject] = [ - "gap": 10, - "topspacing": 25 + "gap": 10 as AnyObject, + "topspacing": 25 as AnyObject ] - view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-gap-[instructionLabel]-[resetButton]-gap-|", + view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-gap-[instructionLabel]-[resetButton]-gap-|", options: NSLayoutFormatOptions(rawValue: 0), metrics: metrics, views: views)) - view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[tzStackView]|", + view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[tzStackView]|", options: NSLayoutFormatOptions(rawValue: 0), metrics: metrics, views: views)) - view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[controlsLayoutContainer]|", + view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[controlsLayoutContainer]|", options: NSLayoutFormatOptions(rawValue: 0), metrics: metrics, views: views)) - view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-topspacing-[instructionLabel]-gap-[controlsLayoutContainer]-gap-[tzStackView]|", + view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-topspacing-[instructionLabel]-gap-[controlsLayoutContainer]-gap-[tzStackView]|", options: NSLayoutFormatOptions(rawValue: 0), metrics: metrics, views: views)) - view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-topspacing-[resetButton]-gap-[controlsLayoutContainer]", + view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-topspacing-[resetButton]-gap-[controlsLayoutContainer]", options: NSLayoutFormatOptions(rawValue: 0), metrics: metrics, views: views)) } - private func createViews() -> [UIView] { + fileprivate func createViews() -> [UIView] { let redView = ExplicitIntrinsicContentSizeView(intrinsicContentSize: CGSize(width: 100, height: 100), name: "Red") let greenView = ExplicitIntrinsicContentSizeView(intrinsicContentSize: CGSize(width: 80, height: 80), name: "Green") let blueView = ExplicitIntrinsicContentSizeView(intrinsicContentSize: CGSize(width: 60, height: 60), name: "Blue") let purpleView = ExplicitIntrinsicContentSizeView(intrinsicContentSize: CGSize(width: 80, height: 80), name: "Purple") let yellowView = ExplicitIntrinsicContentSizeView(intrinsicContentSize: CGSize(width: 100, height: 100), name: "Yellow") - redView.backgroundColor = UIColor.redColor().colorWithAlphaComponent(0.75) - greenView.backgroundColor = UIColor.greenColor().colorWithAlphaComponent(0.75) - blueView.backgroundColor = UIColor.blueColor().colorWithAlphaComponent(0.75) - purpleView.backgroundColor = UIColor.purpleColor().colorWithAlphaComponent(0.75) - yellowView.backgroundColor = UIColor.yellowColor().colorWithAlphaComponent(0.75) + redView.backgroundColor = UIColor.red.withAlphaComponent(0.75) + greenView.backgroundColor = UIColor.green.withAlphaComponent(0.75) + blueView.backgroundColor = UIColor.blue.withAlphaComponent(0.75) + purpleView.backgroundColor = UIColor.purple.withAlphaComponent(0.75) + yellowView.backgroundColor = UIColor.yellow.withAlphaComponent(0.75) return [redView, greenView, blueView, purpleView, yellowView] } //MARK: - Button Actions //-------------------------------------------------------------------------- func reset() { - UIView.animateWithDuration(0.6, delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 0, options: .AllowUserInteraction, animations: { + UIView.animate(withDuration: 0.6, delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 0, options: .allowUserInteraction, animations: { for view in self.tzStackView.arrangedSubviews { - view.hidden = false + view.isHidden = false } }, completion: nil) @@ -133,51 +133,51 @@ class ViewController: UIViewController { //MARK: - Segmented Control Actions //-------------------------------------------------------------------------- - func axisChanged(sender: UISegmentedControl) { + func axisChanged(_ sender: UISegmentedControl) { switch sender.selectedSegmentIndex { case 0: - tzStackView.axis = .Vertical + tzStackView.axis = .vertical default: - tzStackView.axis = .Horizontal + tzStackView.axis = .horizontal } } - func alignmentChanged(sender: UISegmentedControl) { + func alignmentChanged(_ sender: UISegmentedControl) { switch sender.selectedSegmentIndex { case 0: - tzStackView.alignment = .Fill + tzStackView.alignment = .fill case 1: - tzStackView.alignment = .Center + tzStackView.alignment = .center case 2: - tzStackView.alignment = .Leading + tzStackView.alignment = .leading case 3: - tzStackView.alignment = .Top + tzStackView.alignment = .top case 4: - tzStackView.alignment = .Trailing + tzStackView.alignment = .trailing case 5: - tzStackView.alignment = .Bottom + tzStackView.alignment = .bottom default: - tzStackView.alignment = .FirstBaseline + tzStackView.alignment = .firstBaseline } tzStackView.setNeedsUpdateConstraints() } - func distributionChanged(sender: UISegmentedControl) { + func distributionChanged(_ sender: UISegmentedControl) { switch sender.selectedSegmentIndex { case 0: - tzStackView.distribution = .Fill + tzStackView.distribution = .fill case 1: - tzStackView.distribution = .FillEqually + tzStackView.distribution = .fillEqually case 2: - tzStackView.distribution = .FillProportionally + tzStackView.distribution = .fillProportionally case 3: - tzStackView.distribution = .EqualSpacing + tzStackView.distribution = .equalSpacing default: - tzStackView.distribution = .EqualCentering + tzStackView.distribution = .equalCentering } } - override func preferredStatusBarStyle() -> UIStatusBarStyle { - return .LightContent + override var preferredStatusBarStyle : UIStatusBarStyle { + return .lightContent } -} \ No newline at end of file +} diff --git a/TZStackViewTests/TZStackViewTestCase.swift b/TZStackViewTests/TZStackViewTestCase.swift index e0a4c02..cc6b3e3 100644 --- a/TZStackViewTests/TZStackViewTestCase.swift +++ b/TZStackViewTests/TZStackViewTestCase.swift @@ -11,12 +11,9 @@ import XCTest import TZStackView -func delay(delay:Double, closure:()->()) { - dispatch_after( - dispatch_time( - DISPATCH_TIME_NOW, - Int64(delay * Double(NSEC_PER_SEC)) - ), dispatch_get_main_queue(), closure) +func delay(_ delay:Double, closure:@escaping ()->()) { + DispatchQueue.main.asyncAfter( + deadline: DispatchTime.now() + Double(Int64(delay * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC), execute: closure) } class TZStackViewTestCase: XCTestCase { @@ -32,7 +29,7 @@ class TZStackViewTestCase: XCTestCase { tzStackView = TZStackView(arrangedSubviews: createTestViews()) tzStackView.translatesAutoresizingMaskIntoConstraints = false - let window = UIApplication.sharedApplication().windows[0] + let window = UIApplication.shared.windows[0] window.addSubview(uiStackView) window.addSubview(tzStackView) @@ -69,10 +66,10 @@ class TZStackViewTestCase: XCTestCase { } // To override in subclass - func configureStackViews(uiStackView: UIStackView, _ tzStackView: TZStackView) { + func configureStackViews(_ uiStackView: UIStackView, _ tzStackView: TZStackView) { } - func verifyConstraints(log log: Bool = false) { + func verifyConstraints(log: Bool = false) { // Force constraints to be created uiStackView.layoutIfNeeded() tzStackView.layoutIfNeeded() @@ -83,7 +80,7 @@ class TZStackViewTestCase: XCTestCase { // Assert same constraints are created assertSameConstraints(uiStackView.constraints, tzStackView.constraints) - for (index, uiArrangedSubview) in uiStackView.arrangedSubviews.enumerate() { + for (index, uiArrangedSubview) in uiStackView.arrangedSubviews.enumerated() { let tzArrangedSubview = tzStackView.arrangedSubviews[index] let uiConstraints = nonContentSizeLayoutConstraints(uiArrangedSubview) @@ -94,17 +91,17 @@ class TZStackViewTestCase: XCTestCase { } } - private func nonContentSizeLayoutConstraints(view: UIView) -> [NSLayoutConstraint] { - return view.constraints.filter({ "\($0.dynamicType)" != "NSContentSizeLayoutConstraint" }) + fileprivate func nonContentSizeLayoutConstraints(_ view: UIView) -> [NSLayoutConstraint] { + return view.constraints.filter({ "\(type(of: $0))" != "NSContentSizeLayoutConstraint" }) } - func assertSameConstraints(uiConstraints: [NSLayoutConstraint], _ tzConstraints: [NSLayoutConstraint]) { + func assertSameConstraints(_ uiConstraints: [NSLayoutConstraint], _ tzConstraints: [NSLayoutConstraint]) { XCTAssertEqual(uiConstraints.count, tzConstraints.count, "Number of constraints") if uiConstraints.count != tzConstraints.count { return } - for (index, uiConstraint) in uiConstraints.enumerate() { + for (index, uiConstraint) in uiConstraints.enumerated() { let tzConstraint = tzConstraints[index] let result = hasSameConstraintMetaData(uiConstraint, tzConstraint) @@ -114,7 +111,7 @@ class TZStackViewTestCase: XCTestCase { } } - private func hasSameConstraintMetaData(layoutConstraint1: NSLayoutConstraint, _ layoutConstraint2: NSLayoutConstraint) -> Bool { + fileprivate func hasSameConstraintMetaData(_ layoutConstraint1: NSLayoutConstraint, _ layoutConstraint2: NSLayoutConstraint) -> Bool { if layoutConstraint1.constant != layoutConstraint2.constant { return false } @@ -130,7 +127,7 @@ class TZStackViewTestCase: XCTestCase { return true } - private func isSameConstraint(layoutConstraint1: NSLayoutConstraint, _ layoutConstraint2: NSLayoutConstraint) -> Bool { + fileprivate func isSameConstraint(_ layoutConstraint1: NSLayoutConstraint, _ layoutConstraint2: NSLayoutConstraint) -> Bool { if !viewsEqual(layoutConstraint1.firstItem, layoutConstraint2.firstItem) { return false } @@ -146,7 +143,7 @@ class TZStackViewTestCase: XCTestCase { return true } - private func isSameConstraintFlipped(layoutConstraint1: NSLayoutConstraint, _ layoutConstraint2: NSLayoutConstraint) -> Bool { + fileprivate func isSameConstraintFlipped(_ layoutConstraint1: NSLayoutConstraint, _ layoutConstraint2: NSLayoutConstraint) -> Bool { if !viewsEqual(layoutConstraint1.firstItem, layoutConstraint2.secondItem) { return false } @@ -162,17 +159,17 @@ class TZStackViewTestCase: XCTestCase { return true } - private func printConstraints(constraints: [NSLayoutConstraint]) { + fileprivate func printConstraints(_ constraints: [NSLayoutConstraint]) { for constraint in constraints { print(constraint.readableString()) } } - private func viewsEqual(object1: AnyObject?, _ object2: AnyObject?) -> Bool { + fileprivate func viewsEqual(_ object1: AnyObject?, _ object2: AnyObject?) -> Bool { if object1 == nil && object2 == nil { return true } - if let view1 = object1 as? UIView, view2 = object2 as? UIView where view1 == view2 { + if let view1 = object1 as? UIView, let view2 = object2 as? UIView , view1 == view2 { return true } if object1 is UIStackView && object2 is TZStackView { @@ -192,8 +189,8 @@ class TZStackViewTestCase: XCTestCase { return false } - func assertSameOrder(uiTestViews: [TestView], _ tzTestViews: [TestView]) { - for (index, uiTestView) in uiTestViews.enumerate() { + func assertSameOrder(_ uiTestViews: [TestView], _ tzTestViews: [TestView]) { + for (index, uiTestView) in uiTestViews.enumerated() { let tzTestView = tzTestViews[index] let result = uiTestView.index == tzTestView.index @@ -216,4 +213,4 @@ class TZStackViewTestCase: XCTestCase { XCTAssertTrue(result, "\(tzTestView.description) is in arranged subviews but is not actually a subview") } } -} \ No newline at end of file +} diff --git a/TZStackViewTests/TZStackViewTests.swift b/TZStackViewTests/TZStackViewTests.swift index 0d099c8..5a518f9 100644 --- a/TZStackViewTests/TZStackViewTests.swift +++ b/TZStackViewTests/TZStackViewTests.swift @@ -27,18 +27,18 @@ class TZStackViewTests: TZStackViewTestCase { } // Be careful to configure the same thing on the UIStackView as on the TZStackView, otherwise the test is unfair - override func configureStackViews(uiStackView: UIStackView, _ tzStackView: TZStackView) { - uiStackView.layoutMarginsRelativeArrangement = false + override func configureStackViews(_ uiStackView: UIStackView, _ tzStackView: TZStackView) { + uiStackView.isLayoutMarginsRelativeArrangement = false tzStackView.layoutMarginsRelativeArrangement = false } func testFillHorizontalFillEqually() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillEqually - uiStackView.alignment = .Fill - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillEqually - tzStackView.alignment = .Fill + uiStackView.axis = .horizontal + uiStackView.distribution = .fillEqually + uiStackView.alignment = .fill + tzStackView.axis = .horizontal + tzStackView.distribution = .fillEqually + tzStackView.alignment = .fill uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -47,12 +47,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testFillVerticalFillEqually() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillEqually - uiStackView.alignment = .Fill - tzStackView.axis = .Vertical - tzStackView.distribution = .FillEqually - tzStackView.alignment = .Fill + uiStackView.axis = .vertical + uiStackView.distribution = .fillEqually + uiStackView.alignment = .fill + tzStackView.axis = .vertical + tzStackView.distribution = .fillEqually + tzStackView.alignment = .fill uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -61,12 +61,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testFillHorizontalFill() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .Fill - uiStackView.alignment = .Fill - tzStackView.axis = .Horizontal - tzStackView.distribution = .Fill - tzStackView.alignment = .Fill + uiStackView.axis = .horizontal + uiStackView.distribution = .fill + uiStackView.alignment = .fill + tzStackView.axis = .horizontal + tzStackView.distribution = .fill + tzStackView.alignment = .fill uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -75,12 +75,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testFillVerticalFill() { - uiStackView.axis = .Vertical - uiStackView.distribution = .Fill - uiStackView.alignment = .Fill - tzStackView.axis = .Vertical - tzStackView.distribution = .Fill - tzStackView.alignment = .Fill + uiStackView.axis = .vertical + uiStackView.distribution = .fill + uiStackView.alignment = .fill + tzStackView.axis = .vertical + tzStackView.distribution = .fill + tzStackView.alignment = .fill uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -89,12 +89,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testFillHorizontalFillProportionally() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .Fill - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .Fill + uiStackView.axis = .horizontal + uiStackView.distribution = .fillProportionally + uiStackView.alignment = .fill + tzStackView.axis = .horizontal + tzStackView.distribution = .fillProportionally + tzStackView.alignment = .fill uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -103,12 +103,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testFillVerticalFillProportionally() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .Fill - tzStackView.axis = .Vertical - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .Fill + uiStackView.axis = .vertical + uiStackView.distribution = .fillProportionally + uiStackView.alignment = .fill + tzStackView.axis = .vertical + tzStackView.distribution = .fillProportionally + tzStackView.alignment = .fill uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -117,12 +117,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testFillHorizontalEqualSpacing() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .Fill - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .Fill + uiStackView.axis = .horizontal + uiStackView.distribution = .equalSpacing + uiStackView.alignment = .fill + tzStackView.axis = .horizontal + tzStackView.distribution = .equalSpacing + tzStackView.alignment = .fill uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -131,12 +131,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testFillVerticalEqualSpacing() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .Fill - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .Fill + uiStackView.axis = .vertical + uiStackView.distribution = .equalSpacing + uiStackView.alignment = .fill + tzStackView.axis = .vertical + tzStackView.distribution = .equalSpacing + tzStackView.alignment = .fill uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -145,12 +145,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testFillHorizontalEqualCentering() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .Fill - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .Fill + uiStackView.axis = .horizontal + uiStackView.distribution = .equalCentering + uiStackView.alignment = .fill + tzStackView.axis = .horizontal + tzStackView.distribution = .equalCentering + tzStackView.alignment = .fill uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -159,12 +159,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testFillVerticalEqualCentering() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .Fill - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .Fill + uiStackView.axis = .vertical + uiStackView.distribution = .equalCentering + uiStackView.alignment = .fill + tzStackView.axis = .vertical + tzStackView.distribution = .equalCentering + tzStackView.alignment = .fill uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -173,12 +173,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testCenterHorizontalFillEqually() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillEqually - uiStackView.alignment = .Center - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillEqually - tzStackView.alignment = .Center + uiStackView.axis = .horizontal + uiStackView.distribution = .fillEqually + uiStackView.alignment = .center + tzStackView.axis = .horizontal + tzStackView.distribution = .fillEqually + tzStackView.alignment = .center uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -187,12 +187,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testCenterVerticalFillEqually() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillEqually - uiStackView.alignment = .Center - tzStackView.axis = .Vertical - tzStackView.distribution = .FillEqually - tzStackView.alignment = .Center + uiStackView.axis = .vertical + uiStackView.distribution = .fillEqually + uiStackView.alignment = .center + tzStackView.axis = .vertical + tzStackView.distribution = .fillEqually + tzStackView.alignment = .center uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -201,12 +201,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testCenterHorizontalFill() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .Fill - uiStackView.alignment = .Center - tzStackView.axis = .Horizontal - tzStackView.distribution = .Fill - tzStackView.alignment = .Center + uiStackView.axis = .horizontal + uiStackView.distribution = .fill + uiStackView.alignment = .center + tzStackView.axis = .horizontal + tzStackView.distribution = .fill + tzStackView.alignment = .center uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -215,12 +215,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testCenterVerticalFill() { - uiStackView.axis = .Vertical - uiStackView.distribution = .Fill - uiStackView.alignment = .Center - tzStackView.axis = .Vertical - tzStackView.distribution = .Fill - tzStackView.alignment = .Center + uiStackView.axis = .vertical + uiStackView.distribution = .fill + uiStackView.alignment = .center + tzStackView.axis = .vertical + tzStackView.distribution = .fill + tzStackView.alignment = .center uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -229,12 +229,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testCenterHorizontalFillProportionally() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .Center - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .Center + uiStackView.axis = .horizontal + uiStackView.distribution = .fillProportionally + uiStackView.alignment = .center + tzStackView.axis = .horizontal + tzStackView.distribution = .fillProportionally + tzStackView.alignment = .center uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -243,12 +243,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testCenterVetricalFillProportionally() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .Center - tzStackView.axis = .Vertical - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .Center + uiStackView.axis = .vertical + uiStackView.distribution = .fillProportionally + uiStackView.alignment = .center + tzStackView.axis = .vertical + tzStackView.distribution = .fillProportionally + tzStackView.alignment = .center uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -257,12 +257,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testCenterHorizontalEqualSpacing() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .Center - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .Center + uiStackView.axis = .horizontal + uiStackView.distribution = .equalSpacing + uiStackView.alignment = .center + tzStackView.axis = .horizontal + tzStackView.distribution = .equalSpacing + tzStackView.alignment = .center uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -271,12 +271,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testCenterVerticalEqualSpacing() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .Center - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .Center + uiStackView.axis = .vertical + uiStackView.distribution = .equalSpacing + uiStackView.alignment = .center + tzStackView.axis = .vertical + tzStackView.distribution = .equalSpacing + tzStackView.alignment = .center uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -285,12 +285,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testCenterHorizontalEqualCentering() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .Center - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .Center + uiStackView.axis = .horizontal + uiStackView.distribution = .equalCentering + uiStackView.alignment = .center + tzStackView.axis = .horizontal + tzStackView.distribution = .equalCentering + tzStackView.alignment = .center uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -299,12 +299,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testCenterVerticalEqualCentering() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .Center - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .Center + uiStackView.axis = .vertical + uiStackView.distribution = .equalCentering + uiStackView.alignment = .center + tzStackView.axis = .vertical + tzStackView.distribution = .equalCentering + tzStackView.alignment = .center uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -313,12 +313,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testLeadingHorizontalFillEqually() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillEqually - uiStackView.alignment = .Leading - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillEqually - tzStackView.alignment = .Leading + uiStackView.axis = .horizontal + uiStackView.distribution = .fillEqually + uiStackView.alignment = .leading + tzStackView.axis = .horizontal + tzStackView.distribution = .fillEqually + tzStackView.alignment = .leading uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -327,12 +327,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testLeadingHorizontalFill() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .Fill - uiStackView.alignment = .Leading - tzStackView.axis = .Horizontal - tzStackView.distribution = .Fill - tzStackView.alignment = .Leading + uiStackView.axis = .horizontal + uiStackView.distribution = .fill + uiStackView.alignment = .leading + tzStackView.axis = .horizontal + tzStackView.distribution = .fill + tzStackView.alignment = .leading uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -341,12 +341,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testLeadingHorizontalFillProportionally() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .Leading - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .Leading + uiStackView.axis = .horizontal + uiStackView.distribution = .fillProportionally + uiStackView.alignment = .leading + tzStackView.axis = .horizontal + tzStackView.distribution = .fillProportionally + tzStackView.alignment = .leading uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -355,12 +355,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testLeadingHorizontalEqualSpacing() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .Leading - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .Leading + uiStackView.axis = .horizontal + uiStackView.distribution = .equalSpacing + uiStackView.alignment = .leading + tzStackView.axis = .horizontal + tzStackView.distribution = .equalSpacing + tzStackView.alignment = .leading uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -369,12 +369,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testLeadingHorizontalEqualCentering() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .Leading - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .Leading + uiStackView.axis = .horizontal + uiStackView.distribution = .equalCentering + uiStackView.alignment = .leading + tzStackView.axis = .horizontal + tzStackView.distribution = .equalCentering + tzStackView.alignment = .leading uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -383,12 +383,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testLeadingVerticalFillEqually() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillEqually - uiStackView.alignment = .Leading - tzStackView.axis = .Vertical - tzStackView.distribution = .FillEqually - tzStackView.alignment = .Leading + uiStackView.axis = .vertical + uiStackView.distribution = .fillEqually + uiStackView.alignment = .leading + tzStackView.axis = .vertical + tzStackView.distribution = .fillEqually + tzStackView.alignment = .leading uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -397,12 +397,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testLeadingVerticalFill() { - uiStackView.axis = .Vertical - uiStackView.distribution = .Fill - uiStackView.alignment = .Leading - tzStackView.axis = .Vertical - tzStackView.distribution = .Fill - tzStackView.alignment = .Leading + uiStackView.axis = .vertical + uiStackView.distribution = .fill + uiStackView.alignment = .leading + tzStackView.axis = .vertical + tzStackView.distribution = .fill + tzStackView.alignment = .leading uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -411,12 +411,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testLeadingVerticalFillProportionally() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .Leading - tzStackView.axis = .Vertical - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .Leading + uiStackView.axis = .vertical + uiStackView.distribution = .fillProportionally + uiStackView.alignment = .leading + tzStackView.axis = .vertical + tzStackView.distribution = .fillProportionally + tzStackView.alignment = .leading uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -425,12 +425,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testLeadingVerticalEqualSpacing() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .Leading - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .Leading + uiStackView.axis = .vertical + uiStackView.distribution = .equalSpacing + uiStackView.alignment = .leading + tzStackView.axis = .vertical + tzStackView.distribution = .equalSpacing + tzStackView.alignment = .leading uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -439,12 +439,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testLeadingVerticalEqualCentering() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .Leading - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .Leading + uiStackView.axis = .vertical + uiStackView.distribution = .equalCentering + uiStackView.alignment = .leading + tzStackView.axis = .vertical + tzStackView.distribution = .equalCentering + tzStackView.alignment = .leading uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -453,12 +453,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testTopHorizontalFillEqually() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillEqually - uiStackView.alignment = .Top - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillEqually - tzStackView.alignment = .Top + uiStackView.axis = .horizontal + uiStackView.distribution = .fillEqually + uiStackView.alignment = .top + tzStackView.axis = .horizontal + tzStackView.distribution = .fillEqually + tzStackView.alignment = .top uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -467,12 +467,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testTopHorizontalFill() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .Fill - uiStackView.alignment = .Top - tzStackView.axis = .Horizontal - tzStackView.distribution = .Fill - tzStackView.alignment = .Top + uiStackView.axis = .horizontal + uiStackView.distribution = .fill + uiStackView.alignment = .top + tzStackView.axis = .horizontal + tzStackView.distribution = .fill + tzStackView.alignment = .top uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -481,12 +481,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testTopHorizontalFillProportionally() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .Top - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .Top + uiStackView.axis = .horizontal + uiStackView.distribution = .fillProportionally + uiStackView.alignment = .top + tzStackView.axis = .horizontal + tzStackView.distribution = .fillProportionally + tzStackView.alignment = .top uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -495,12 +495,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testTopHorizontalEqualSpacing() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .Top - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .Top + uiStackView.axis = .horizontal + uiStackView.distribution = .equalSpacing + uiStackView.alignment = .top + tzStackView.axis = .horizontal + tzStackView.distribution = .equalSpacing + tzStackView.alignment = .top uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -509,12 +509,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testTopHorizontalEqualCentering() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .Top - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .Top + uiStackView.axis = .horizontal + uiStackView.distribution = .equalCentering + uiStackView.alignment = .top + tzStackView.axis = .horizontal + tzStackView.distribution = .equalCentering + tzStackView.alignment = .top uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -523,12 +523,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testTopHVerticalFillEqually() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillEqually - uiStackView.alignment = .Top - tzStackView.axis = .Vertical - tzStackView.distribution = .FillEqually - tzStackView.alignment = .Top + uiStackView.axis = .vertical + uiStackView.distribution = .fillEqually + uiStackView.alignment = .top + tzStackView.axis = .vertical + tzStackView.distribution = .fillEqually + tzStackView.alignment = .top uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -537,12 +537,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testTopVerticalFill() { - uiStackView.axis = .Vertical - uiStackView.distribution = .Fill - uiStackView.alignment = .Top - tzStackView.axis = .Vertical - tzStackView.distribution = .Fill - tzStackView.alignment = .Top + uiStackView.axis = .vertical + uiStackView.distribution = .fill + uiStackView.alignment = .top + tzStackView.axis = .vertical + tzStackView.distribution = .fill + tzStackView.alignment = .top uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -551,12 +551,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testTopVerticalFillProportionally() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .Top - tzStackView.axis = .Vertical - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .Top + uiStackView.axis = .vertical + uiStackView.distribution = .fillProportionally + uiStackView.alignment = .top + tzStackView.axis = .vertical + tzStackView.distribution = .fillProportionally + tzStackView.alignment = .top uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -565,12 +565,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testTopVerticalEqualSpacing() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .Top - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .Top + uiStackView.axis = .vertical + uiStackView.distribution = .equalSpacing + uiStackView.alignment = .top + tzStackView.axis = .vertical + tzStackView.distribution = .equalSpacing + tzStackView.alignment = .top uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -579,12 +579,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testTopVerticalEqualCentering() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .Top - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .Top + uiStackView.axis = .vertical + uiStackView.distribution = .equalCentering + uiStackView.alignment = .top + tzStackView.axis = .vertical + tzStackView.distribution = .equalCentering + tzStackView.alignment = .top uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -593,12 +593,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testTrailingHorizontalFillEqually() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillEqually - uiStackView.alignment = .Trailing - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillEqually - tzStackView.alignment = .Trailing + uiStackView.axis = .horizontal + uiStackView.distribution = .fillEqually + uiStackView.alignment = .trailing + tzStackView.axis = .horizontal + tzStackView.distribution = .fillEqually + tzStackView.alignment = .trailing uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -607,12 +607,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testTrailingHorizontalFill() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .Fill - uiStackView.alignment = .Trailing - tzStackView.axis = .Horizontal - tzStackView.distribution = .Fill - tzStackView.alignment = .Trailing + uiStackView.axis = .horizontal + uiStackView.distribution = .fill + uiStackView.alignment = .trailing + tzStackView.axis = .horizontal + tzStackView.distribution = .fill + tzStackView.alignment = .trailing uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -621,12 +621,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testTrailingHorizontalFillProportionally() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .Trailing - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .Trailing + uiStackView.axis = .horizontal + uiStackView.distribution = .fillProportionally + uiStackView.alignment = .trailing + tzStackView.axis = .horizontal + tzStackView.distribution = .fillProportionally + tzStackView.alignment = .trailing uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -635,12 +635,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testTrailingHorizontalEqualSpacing() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .Trailing - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .Trailing + uiStackView.axis = .horizontal + uiStackView.distribution = .equalSpacing + uiStackView.alignment = .trailing + tzStackView.axis = .horizontal + tzStackView.distribution = .equalSpacing + tzStackView.alignment = .trailing uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -649,12 +649,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testTrailingHorizontalEqualCentering() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .Trailing - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .Trailing + uiStackView.axis = .horizontal + uiStackView.distribution = .equalCentering + uiStackView.alignment = .trailing + tzStackView.axis = .horizontal + tzStackView.distribution = .equalCentering + tzStackView.alignment = .trailing uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -663,12 +663,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testTrailingVerticalFillEqually() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillEqually - uiStackView.alignment = .Trailing - tzStackView.axis = .Vertical - tzStackView.distribution = .FillEqually - tzStackView.alignment = .Trailing + uiStackView.axis = .vertical + uiStackView.distribution = .fillEqually + uiStackView.alignment = .trailing + tzStackView.axis = .vertical + tzStackView.distribution = .fillEqually + tzStackView.alignment = .trailing uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -677,12 +677,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testTrailingVerticalFill() { - uiStackView.axis = .Vertical - uiStackView.distribution = .Fill - uiStackView.alignment = .Trailing - tzStackView.axis = .Vertical - tzStackView.distribution = .Fill - tzStackView.alignment = .Trailing + uiStackView.axis = .vertical + uiStackView.distribution = .fill + uiStackView.alignment = .trailing + tzStackView.axis = .vertical + tzStackView.distribution = .fill + tzStackView.alignment = .trailing uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -691,12 +691,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testTrailingVerticalFillProportionally() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .Trailing - tzStackView.axis = .Vertical - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .Trailing + uiStackView.axis = .vertical + uiStackView.distribution = .fillProportionally + uiStackView.alignment = .trailing + tzStackView.axis = .vertical + tzStackView.distribution = .fillProportionally + tzStackView.alignment = .trailing uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -705,12 +705,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testTrailingVerticalEqualSpacing() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .Trailing - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .Trailing + uiStackView.axis = .vertical + uiStackView.distribution = .equalSpacing + uiStackView.alignment = .trailing + tzStackView.axis = .vertical + tzStackView.distribution = .equalSpacing + tzStackView.alignment = .trailing uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -719,12 +719,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testTrailingVerticalEqualCentering() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .Trailing - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .Trailing + uiStackView.axis = .vertical + uiStackView.distribution = .equalCentering + uiStackView.alignment = .trailing + tzStackView.axis = .vertical + tzStackView.distribution = .equalCentering + tzStackView.alignment = .trailing uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -733,12 +733,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testBottomHorizontalFillEqually() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillEqually - uiStackView.alignment = .Bottom - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillEqually - tzStackView.alignment = .Bottom + uiStackView.axis = .horizontal + uiStackView.distribution = .fillEqually + uiStackView.alignment = .bottom + tzStackView.axis = .horizontal + tzStackView.distribution = .fillEqually + tzStackView.alignment = .bottom uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -747,12 +747,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testBottomHorizontalFill() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .Fill - uiStackView.alignment = .Bottom - tzStackView.axis = .Horizontal - tzStackView.distribution = .Fill - tzStackView.alignment = .Bottom + uiStackView.axis = .horizontal + uiStackView.distribution = .fill + uiStackView.alignment = .bottom + tzStackView.axis = .horizontal + tzStackView.distribution = .fill + tzStackView.alignment = .bottom uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -761,12 +761,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testBottomHorizontalFillProportionally() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .Bottom - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .Bottom + uiStackView.axis = .horizontal + uiStackView.distribution = .fillProportionally + uiStackView.alignment = .bottom + tzStackView.axis = .horizontal + tzStackView.distribution = .fillProportionally + tzStackView.alignment = .bottom uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -775,12 +775,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testBottomHorizontalEqualSpacing() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .Bottom - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .Bottom + uiStackView.axis = .horizontal + uiStackView.distribution = .equalSpacing + uiStackView.alignment = .bottom + tzStackView.axis = .horizontal + tzStackView.distribution = .equalSpacing + tzStackView.alignment = .bottom uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -789,12 +789,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testBottomHorizontalEqualCentering() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .Bottom - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .Bottom + uiStackView.axis = .horizontal + uiStackView.distribution = .equalCentering + uiStackView.alignment = .bottom + tzStackView.axis = .horizontal + tzStackView.distribution = .equalCentering + tzStackView.alignment = .bottom uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -803,12 +803,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testBottomVerticalFillEqually() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillEqually - uiStackView.alignment = .Bottom - tzStackView.axis = .Vertical - tzStackView.distribution = .FillEqually - tzStackView.alignment = .Bottom + uiStackView.axis = .vertical + uiStackView.distribution = .fillEqually + uiStackView.alignment = .bottom + tzStackView.axis = .vertical + tzStackView.distribution = .fillEqually + tzStackView.alignment = .bottom uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -817,12 +817,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testBottomVerticalFill() { - uiStackView.axis = .Vertical - uiStackView.distribution = .Fill - uiStackView.alignment = .Bottom - tzStackView.axis = .Vertical - tzStackView.distribution = .Fill - tzStackView.alignment = .Bottom + uiStackView.axis = .vertical + uiStackView.distribution = .fill + uiStackView.alignment = .bottom + tzStackView.axis = .vertical + tzStackView.distribution = .fill + tzStackView.alignment = .bottom uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -831,12 +831,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testBottomVerticalFillProportionally() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .Bottom - tzStackView.axis = .Vertical - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .Bottom + uiStackView.axis = .vertical + uiStackView.distribution = .fillProportionally + uiStackView.alignment = .bottom + tzStackView.axis = .vertical + tzStackView.distribution = .fillProportionally + tzStackView.alignment = .bottom uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -845,12 +845,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testBottomVerticalEqualSpacing() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .Bottom - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .Bottom + uiStackView.axis = .vertical + uiStackView.distribution = .equalSpacing + uiStackView.alignment = .bottom + tzStackView.axis = .vertical + tzStackView.distribution = .equalSpacing + tzStackView.alignment = .bottom uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -859,12 +859,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testBottomVerticalEqualCentering() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .Bottom - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .Bottom + uiStackView.axis = .vertical + uiStackView.distribution = .equalCentering + uiStackView.alignment = .bottom + tzStackView.axis = .vertical + tzStackView.distribution = .equalCentering + tzStackView.alignment = .bottom uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -873,12 +873,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testFirstBaselineHorizontalFillEqually() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillEqually - uiStackView.alignment = .FirstBaseline - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillEqually - tzStackView.alignment = .FirstBaseline + uiStackView.axis = .horizontal + uiStackView.distribution = .fillEqually + uiStackView.alignment = .firstBaseline + tzStackView.axis = .horizontal + tzStackView.distribution = .fillEqually + tzStackView.alignment = .firstBaseline uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -887,12 +887,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testFirstBaselineHorizontalFill() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .Fill - uiStackView.alignment = .FirstBaseline - tzStackView.axis = .Horizontal - tzStackView.distribution = .Fill - tzStackView.alignment = .FirstBaseline + uiStackView.axis = .horizontal + uiStackView.distribution = .fill + uiStackView.alignment = .firstBaseline + tzStackView.axis = .horizontal + tzStackView.distribution = .fill + tzStackView.alignment = .firstBaseline uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -901,12 +901,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testFirstBaselineHorizontalFillProportionally() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .FirstBaseline - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .FirstBaseline + uiStackView.axis = .horizontal + uiStackView.distribution = .fillProportionally + uiStackView.alignment = .firstBaseline + tzStackView.axis = .horizontal + tzStackView.distribution = .fillProportionally + tzStackView.alignment = .firstBaseline uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -915,12 +915,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testFirstBaselineHorizontalEqualSpacing() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .FirstBaseline - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .FirstBaseline + uiStackView.axis = .horizontal + uiStackView.distribution = .equalSpacing + uiStackView.alignment = .firstBaseline + tzStackView.axis = .horizontal + tzStackView.distribution = .equalSpacing + tzStackView.alignment = .firstBaseline uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -929,12 +929,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testFirstBaselineHorizontalEqualCentering() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .FirstBaseline - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .FirstBaseline + uiStackView.axis = .horizontal + uiStackView.distribution = .equalCentering + uiStackView.alignment = .firstBaseline + tzStackView.axis = .horizontal + tzStackView.distribution = .equalCentering + tzStackView.alignment = .firstBaseline uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -943,12 +943,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testFirstBaselineVerticalFillEqually() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillEqually - uiStackView.alignment = .FirstBaseline - tzStackView.axis = .Vertical - tzStackView.distribution = .FillEqually - tzStackView.alignment = .FirstBaseline + uiStackView.axis = .vertical + uiStackView.distribution = .fillEqually + uiStackView.alignment = .firstBaseline + tzStackView.axis = .vertical + tzStackView.distribution = .fillEqually + tzStackView.alignment = .firstBaseline uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -958,12 +958,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testFirstBaselineVerticalFill() { - uiStackView.axis = .Vertical - uiStackView.distribution = .Fill - uiStackView.alignment = .FirstBaseline - tzStackView.axis = .Vertical - tzStackView.distribution = .Fill - tzStackView.alignment = .FirstBaseline + uiStackView.axis = .vertical + uiStackView.distribution = .fill + uiStackView.alignment = .firstBaseline + tzStackView.axis = .vertical + tzStackView.distribution = .fill + tzStackView.alignment = .firstBaseline uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -972,12 +972,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testFirstBaselineVerticalFillProportionally() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .FirstBaseline - tzStackView.axis = .Vertical - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .FirstBaseline + uiStackView.axis = .vertical + uiStackView.distribution = .fillProportionally + uiStackView.alignment = .firstBaseline + tzStackView.axis = .vertical + tzStackView.distribution = .fillProportionally + tzStackView.alignment = .firstBaseline uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -986,12 +986,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testFirstBaselineVerticalEqualSpacing() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .FirstBaseline - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .FirstBaseline + uiStackView.axis = .vertical + uiStackView.distribution = .equalSpacing + uiStackView.alignment = .firstBaseline + tzStackView.axis = .vertical + tzStackView.distribution = .equalSpacing + tzStackView.alignment = .firstBaseline uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -1000,12 +1000,12 @@ class TZStackViewTests: TZStackViewTestCase { } func testFirstBaselineVerticalEqualCentering() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .FirstBaseline - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .FirstBaseline + uiStackView.axis = .vertical + uiStackView.distribution = .equalCentering + uiStackView.alignment = .firstBaseline + tzStackView.axis = .vertical + tzStackView.distribution = .equalCentering + tzStackView.alignment = .firstBaseline uiStackView.spacing = 10 tzStackView.spacing = 10 @@ -1027,7 +1027,7 @@ class TZStackViewTests: TZStackViewTestCase { func testConsistencyWhenInsertingArrangedSubview() { let uiTestView = TestView(index: -1, size: CGSize(width: 100, height: 100)) - uiStackView.insertArrangedSubview(uiTestView, atIndex: 0) + uiStackView.insertArrangedSubview(uiTestView, at: 0) let tzTestView = TestView(index: -1, size: CGSize(width: 100, height: 100)) tzStackView.insertArrangedSubview(tzTestView, atIndex: 0) diff --git a/TZStackViewTests/TestView.swift b/TZStackViewTests/TestView.swift index 5d341e0..5c89d1d 100644 --- a/TZStackViewTests/TestView.swift +++ b/TZStackViewTests/TestView.swift @@ -16,7 +16,7 @@ class TestView: UIView { init(index: Int, size: CGSize) { self.index = index self.size = size - super.init(frame: CGRectZero) + super.init(frame: CGRect.zero) } required init(coder aDecoder: NSCoder) { @@ -27,14 +27,14 @@ class TestView: UIView { return "TestView\(index)" } - override func intrinsicContentSize() -> CGSize { + override var intrinsicContentSize : CGSize { return size } } func ==(lhs: NSObject, rhs: NSObject) -> Bool { - if let lhs = lhs as? TestView, rhs = rhs as? TestView { + if let lhs = lhs as? TestView, let rhs = rhs as? TestView { return lhs.index == rhs.index } return lhs === rhs -} \ No newline at end of file +}