Skip to content

Commit f63ab35

Browse files
authored
Merge pull request #46 from 3sidedcube/release/1.5.0
Release/1.5.0
2 parents 08f1b23 + 3dcb8d1 commit f63ab35

File tree

9 files changed

+1001
-781
lines changed

9 files changed

+1001
-781
lines changed

ThunderBasics.xcodeproj/project.pbxproj

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@
7575
B1E6FC4B218CAA8800971DC3 /* UIImage+Effects.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1E6FC4A218CAA8800971DC3 /* UIImage+Effects.swift */; };
7676
B1E6FC4D218CABF900971DC3 /* UIImage+Crop.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1E6FC4C218CABF900971DC3 /* UIImage+Crop.swift */; };
7777
B1FA1795230EE22C00AB9891 /* UIView+IntrinsicContentSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1FA1794230EE22C00AB9891 /* UIView+IntrinsicContentSize.swift */; };
78+
B834865923D9E47A00F52BA6 /* UIEdgeInsets+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B834865823D9E47A00F52BA6 /* UIEdgeInsets+Extensions.swift */; };
79+
B834865D23D9E62E00F52BA6 /* DateFormatter+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B834865C23D9E62E00F52BA6 /* DateFormatter+Extensions.swift */; };
80+
B834865F23D9E89F00F52BA6 /* String+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B834865E23D9E89F00F52BA6 /* String+Extensions.swift */; };
81+
B834866123D9E93B00F52BA6 /* UIView+Shadow.swift in Sources */ = {isa = PBXBuildFile; fileRef = B834866023D9E93B00F52BA6 /* UIView+Shadow.swift */; };
7882
C272EFE819C8325D004BD339 /* ThunderBasics.h in Headers */ = {isa = PBXBuildFile; fileRef = C272EFB919C8325D004BD339 /* ThunderBasics.h */; settings = {ATTRIBUTES = (Public, ); }; };
7983
/* End PBXBuildFile section */
8084

@@ -146,6 +150,10 @@
146150
B1E6FC4A218CAA8800971DC3 /* UIImage+Effects.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+Effects.swift"; sourceTree = "<group>"; };
147151
B1E6FC4C218CABF900971DC3 /* UIImage+Crop.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+Crop.swift"; sourceTree = "<group>"; };
148152
B1FA1794230EE22C00AB9891 /* UIView+IntrinsicContentSize.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIView+IntrinsicContentSize.swift"; sourceTree = "<group>"; };
153+
B834865823D9E47A00F52BA6 /* UIEdgeInsets+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIEdgeInsets+Extensions.swift"; sourceTree = "<group>"; };
154+
B834865C23D9E62E00F52BA6 /* DateFormatter+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DateFormatter+Extensions.swift"; sourceTree = "<group>"; };
155+
B834865E23D9E89F00F52BA6 /* String+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Extensions.swift"; sourceTree = "<group>"; };
156+
B834866023D9E93B00F52BA6 /* UIView+Shadow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIView+Shadow.swift"; sourceTree = "<group>"; };
149157
C272EF8419C831AB004BD339 /* ThunderBasics.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ThunderBasics.framework; sourceTree = BUILT_PRODUCTS_DIR; };
150158
C272EF8F19C831AC004BD339 /* ThunderBasicsTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ThunderBasicsTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
151159
C272EF9219C831AC004BD339 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
@@ -232,6 +240,8 @@
232240
B1D791FB1CBD58BA00EE5D45 /* UIApplication+NetworkActivityIndicator.m */,
233241
B13779312029F7EF006FE6D5 /* JSONSerialization+FromFile.swift */,
234242
980AE1D22208965A00540E8E /* Locale Language Codes */,
243+
B834865823D9E47A00F52BA6 /* UIEdgeInsets+Extensions.swift */,
244+
B834865E23D9E89F00F52BA6 /* String+Extensions.swift */,
235245
);
236246
name = Helpers;
237247
sourceTree = "<group>";
@@ -323,6 +333,7 @@
323333
B146C3BB219071F700A1DBCD /* UIView+Pop.swift */,
324334
B146C3BD21908A6700A1DBCD /* UILabel+SizeToFit.swift */,
325335
B146C3BF21908AFA00A1DBCD /* CAGradientLayer+AutoGradient.swift */,
336+
B834866023D9E93B00F52BA6 /* UIView+Shadow.swift */,
326337
);
327338
name = "Views and Layers";
328339
sourceTree = "<group>";
@@ -355,6 +366,7 @@
355366
children = (
356367
B152AC4F1F20BF020079372B /* DateHelpers.swift */,
357368
B146C3F22191E47600A1DBCD /* NSDateFormatter+Strftime.swift */,
369+
B834865C23D9E62E00F52BA6 /* DateFormatter+Extensions.swift */,
358370
);
359371
name = "Date and Time";
360372
sourceTree = "<group>";
@@ -696,6 +708,7 @@
696708
B137792F2029F1F3006FE6D5 /* MapView+Fitting.swift in Sources */,
697709
49CF132B1AB6D88A00AA5971 /* TSCPerson.m in Sources */,
698710
B1212A252321643800B43379 /* AccessibleButton.swift in Sources */,
711+
B834866123D9E93B00F52BA6 /* UIView+Shadow.swift in Sources */,
699712
B146C3B221904B4E00A1DBCD /* UIImage+Conversion.swift in Sources */,
700713
B13778DD20289820006FE6D5 /* UIView+AutoLayout.swift in Sources */,
701714
B1E6FC32218C5D9A00971DC3 /* ToastView.swift in Sources */,
@@ -709,9 +722,12 @@
709722
B1898CD1230D7A9000A1F5D1 /* AccessibilityRefreshingViewController.swift in Sources */,
710723
B152AC501F20BF020079372B /* DateHelpers.swift in Sources */,
711724
49CF13291AB6D88A00AA5971 /* TSCContactsController.m in Sources */,
725+
B834865923D9E47A00F52BA6 /* UIEdgeInsets+Extensions.swift in Sources */,
712726
B146C3E22191CB2400A1DBCD /* UIWindow+VisibleViewController.swift in Sources */,
727+
B834865F23D9E89F00F52BA6 /* String+Extensions.swift in Sources */,
713728
B146C3C221908FB900A1DBCD /* UIColor+HexString.swift in Sources */,
714729
B1E6FC36218C6BC000971DC3 /* ToastNotificationController.swift in Sources */,
730+
B834865D23D9E62E00F52BA6 /* DateFormatter+Extensions.swift in Sources */,
715731
);
716732
runOnlyForDeploymentPostprocessing = 0;
717733
};
@@ -980,7 +996,7 @@
980996
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
981997
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
982998
MACH_O_TYPE = mh_dylib;
983-
MARKETING_VERSION = 1.4.1;
999+
MARKETING_VERSION = 1.5.0;
9841000
ONLY_ACTIVE_ARCH = NO;
9851001
PRODUCT_BUNDLE_IDENTIFIER = "com.threesidedcube.$(PRODUCT_NAME:rfc1034identifier)";
9861002
PRODUCT_NAME = ThunderBasics;
@@ -1009,7 +1025,7 @@
10091025
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
10101026
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
10111027
MACH_O_TYPE = mh_dylib;
1012-
MARKETING_VERSION = 1.4.1;
1028+
MARKETING_VERSION = 1.5.0;
10131029
PRODUCT_BUNDLE_IDENTIFIER = "com.threesidedcube.$(PRODUCT_NAME:rfc1034identifier)";
10141030
PRODUCT_NAME = ThunderBasics;
10151031
SKIP_INSTALL = YES;

ThunderBasics/CAGradientLayer+AutoGradient.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import UIKit
1010

11-
extension CAGradientLayer {
11+
public extension CAGradientLayer {
1212

1313
/// Creates a `CAGradientLayer` transitioning from one color to another.
1414
/// A transparent color can be parsed to create dark to translucent gradients.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
//
2+
// DateFormatter+Extensions.swift
3+
// ThunderBasics-iOS
4+
//
5+
// Created by Ben Shutt on 23/01/2020.
6+
// Copyright © 2020 threesidedcube. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
public extension DateFormatter {
12+
13+
/// Standard `iso8601` `DateFormatter`
14+
/// Note milliseconds included, for customization over `dateFormat`, see `iso8601(dateFormat:timeZone:)`
15+
static var iso8601: DateFormatter {
16+
return iso8601Formatter(
17+
dateFormat: "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
18+
)
19+
}
20+
21+
/// `DateFormatter` has:
22+
/// - `.iso8601` `Calendar`
23+
/// - "en_US_POSIX" `Locale`
24+
/// - Given `timeZone`, defaults to GMT
25+
/// - Given `dateFormat`
26+
static func iso8601Formatter(dateFormat: String, timeZone: TimeZone? = TimeZone(secondsFromGMT: 0)) -> DateFormatter {
27+
let formatter = DateFormatter()
28+
formatter.calendar = Calendar(identifier: .iso8601)
29+
formatter.locale = Locale(identifier: "en_US_POSIX")
30+
formatter.timeZone = timeZone
31+
formatter.dateFormat = dateFormat
32+
return formatter
33+
}
34+
}

0 commit comments

Comments
 (0)