From 9bc574fda0c6275cd8eb3a49368a290a7a8415e3 Mon Sep 17 00:00:00 2001 From: Meng To Date: Sun, 1 Feb 2015 12:25:51 +0700 Subject: [PATCH 001/126] Removed Proxima Nova font --- SpringApp.xcodeproj/project.pbxproj | 20 ----- .../UserInterfaceState.xcuserstate | Bin 27923 -> 30208 bytes SpringApp/Base.lproj/Main.storyboard | 71 +++++++----------- SpringApp/font/ProximaNova-Light.otf | Bin 62968 -> 0 bytes SpringApp/font/ProximaNova-Regular.otf | Bin 62892 -> 0 bytes SpringApp/font/ProximaNova-Semibold.otf | Bin 63116 -> 0 bytes 6 files changed, 26 insertions(+), 65 deletions(-) delete mode 100755 SpringApp/font/ProximaNova-Light.otf delete mode 100755 SpringApp/font/ProximaNova-Regular.otf delete mode 100755 SpringApp/font/ProximaNova-Semibold.otf diff --git a/SpringApp.xcodeproj/project.pbxproj b/SpringApp.xcodeproj/project.pbxproj index 244df64..d920c5d 100644 --- a/SpringApp.xcodeproj/project.pbxproj +++ b/SpringApp.xcodeproj/project.pbxproj @@ -44,9 +44,6 @@ 964117481A5BE90A000E3A5A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 964117471A5BE90A000E3A5A /* Images.xcassets */; }; 9641174B1A5BE90A000E3A5A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 964117491A5BE90A000E3A5A /* LaunchScreen.xib */; }; 964117571A5BE90A000E3A5A /* SpringAppTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 964117561A5BE90A000E3A5A /* SpringAppTests.swift */; }; - 964117641A5BEBC9000E3A5A /* ProximaNova-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = 964117611A5BEBC9000E3A5A /* ProximaNova-Light.otf */; }; - 964117651A5BEBC9000E3A5A /* ProximaNova-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 964117621A5BEBC9000E3A5A /* ProximaNova-Regular.otf */; }; - 964117661A5BEBC9000E3A5A /* ProximaNova-Semibold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 964117631A5BEBC9000E3A5A /* ProximaNova-Semibold.otf */; }; 9641178B1A5BEC6F000E3A5A /* SpringViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 964117881A5BEC6F000E3A5A /* SpringViewController.swift */; }; 9641178C1A5BEC6F000E3A5A /* OptionsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 964117891A5BEC6F000E3A5A /* OptionsViewController.swift */; }; 9641178D1A5BEC6F000E3A5A /* CodeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9641178A1A5BEC6F000E3A5A /* CodeViewController.swift */; }; @@ -138,9 +135,6 @@ 964117501A5BE90A000E3A5A /* SpringAppTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SpringAppTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 964117551A5BE90A000E3A5A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 964117561A5BE90A000E3A5A /* SpringAppTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpringAppTests.swift; sourceTree = ""; }; - 964117611A5BEBC9000E3A5A /* ProximaNova-Light.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "ProximaNova-Light.otf"; sourceTree = ""; }; - 964117621A5BEBC9000E3A5A /* ProximaNova-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "ProximaNova-Regular.otf"; sourceTree = ""; }; - 964117631A5BEBC9000E3A5A /* ProximaNova-Semibold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "ProximaNova-Semibold.otf"; sourceTree = ""; }; 964117881A5BEC6F000E3A5A /* SpringViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SpringViewController.swift; sourceTree = ""; }; 964117891A5BEC6F000E3A5A /* OptionsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OptionsViewController.swift; sourceTree = ""; }; 9641178A1A5BEC6F000E3A5A /* CodeViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CodeViewController.swift; sourceTree = ""; }; @@ -274,7 +268,6 @@ isa = PBXGroup; children = ( 961888D21A66BF9000295A64 /* Spring */, - 964117601A5BEBC9000E3A5A /* font */, 964117401A5BE90A000E3A5A /* AppDelegate.swift */, 964117881A5BEC6F000E3A5A /* SpringViewController.swift */, 964117891A5BEC6F000E3A5A /* OptionsViewController.swift */, @@ -312,16 +305,6 @@ name = "Supporting Files"; sourceTree = ""; }; - 964117601A5BEBC9000E3A5A /* font */ = { - isa = PBXGroup; - children = ( - 964117611A5BEBC9000E3A5A /* ProximaNova-Light.otf */, - 964117621A5BEBC9000E3A5A /* ProximaNova-Regular.otf */, - 964117631A5BEBC9000E3A5A /* ProximaNova-Semibold.otf */, - ); - path = font; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -478,9 +461,6 @@ buildActionMask = 2147483647; files = ( 964117461A5BE90A000E3A5A /* Main.storyboard in Resources */, - 964117661A5BEBC9000E3A5A /* ProximaNova-Semibold.otf in Resources */, - 964117651A5BEBC9000E3A5A /* ProximaNova-Regular.otf in Resources */, - 964117641A5BEBC9000E3A5A /* ProximaNova-Light.otf in Resources */, 9641174B1A5BE90A000E3A5A /* LaunchScreen.xib in Resources */, 964117481A5BE90A000E3A5A /* Images.xcassets in Resources */, ); diff --git a/SpringApp.xcodeproj/project.xcworkspace/xcuserdata/mengto.xcuserdatad/UserInterfaceState.xcuserstate b/SpringApp.xcodeproj/project.xcworkspace/xcuserdata/mengto.xcuserdatad/UserInterfaceState.xcuserstate index fcbd81520fecafc42865f8a27b0c8b537763e5c9..7b64b7044b18ec988959336f47639adfebaefc82 100644 GIT binary patch delta 16857 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 z - + - - - ProximaNova-Regular - ProximaNova-Regular - ProximaNova-Regular - - - ProximaNova-Semibold - ProximaNova-Semibold - ProximaNova-Semibold - ProximaNova-Semibold - ProximaNova-Semibold - ProximaNova-Semibold - ProximaNova-Semibold - ProximaNova-Semibold - ProximaNova-Semibold - ProximaNova-Semibold - - @@ -69,7 +50,7 @@ - + @@ -86,7 +67,7 @@ - + @@ -191,20 +172,20 @@ @@ -298,8 +279,8 @@ @@ -320,7 +301,7 @@ - + @@ -388,8 +369,8 @@ @@ -407,8 +388,8 @@ @@ -426,8 +407,8 @@ @@ -445,8 +426,8 @@ @@ -464,8 +445,8 @@ @@ -483,8 +464,8 @@ @@ -494,7 +475,7 @@ - + @@ -520,7 +501,7 @@ - + diff --git a/SpringApp/font/ProximaNova-Light.otf b/SpringApp/font/ProximaNova-Light.otf deleted file mode 100755 index d8f5338d211218819bddb8f37a84853454a9549c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62968 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

{5eS!rW$p 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 LY^j81XJ`Kg;PZ?! diff --git a/SpringApp/font/ProximaNova-Semibold.otf b/SpringApp/font/ProximaNova-Semibold.otf deleted file mode 100755 index 11a950a079f986c91784598445facd8d2ac93ee0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63116 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 From 309f1da9dd4879a28cb57223fd468d2a15201c5d Mon Sep 17 00:00:00 2001 From: James Tang Date: Sun, 1 Feb 2015 14:04:25 +0800 Subject: [PATCH 002/126] Added MIT License. Fixes #8 --- LICENSE | 19 +++++++++++++++++++ README.md | 5 +++++ Spring/BlurView.swift | 22 ++++++++++++++++++---- Spring/Data.swift | 22 ++++++++++++++++++---- Spring/DesignableButton.swift | 22 ++++++++++++++++++---- Spring/DesignableImageView.swift | 22 ++++++++++++++++++---- Spring/DesignableLabel.swift | 22 ++++++++++++++++++---- Spring/DesignableTabBarController.swift | 22 ++++++++++++++++++---- Spring/DesignableTextField.swift | 22 ++++++++++++++++++---- Spring/DesignableTextView.swift | 22 ++++++++++++++++++---- Spring/DesignableView.swift | 22 ++++++++++++++++++---- Spring/ImageLoader.swift | 23 +++++++++++++++++++---- Spring/KeyboardAvoidingScrollView.swift | 22 ++++++++++++++++++---- Spring/KeyboardLayoutConstraint.swift | 22 ++++++++++++++++++---- Spring/LoadingView.swift | 22 ++++++++++++++++++---- Spring/Misc.swift | 22 ++++++++++++++++++---- Spring/Spring.swift | 22 ++++++++++++++++++---- Spring/SpringAnimation.swift | 22 ++++++++++++++++++---- Spring/SpringButton.swift | 22 ++++++++++++++++++---- Spring/SpringImageView.swift | 22 ++++++++++++++++++---- Spring/SpringLabel.swift | 22 ++++++++++++++++++---- Spring/SpringTextField.swift | 22 ++++++++++++++++++---- Spring/SpringTextView.swift | 22 ++++++++++++++++++---- Spring/SpringView.swift | 22 ++++++++++++++++++---- Spring/TransitionManager.swift | 22 ++++++++++++++++++---- Spring/TransitionZoom.swift | 22 ++++++++++++++++++---- Spring/UnwindSegue.swift | 22 ++++++++++++++++++---- 27 files changed, 475 insertions(+), 100 deletions(-) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..2b55794 --- /dev/null +++ b/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2014-2015 Meng To (meng@designcode.io) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/README.md b/README.md index 0a0925d..6d8ee91 100644 --- a/README.md +++ b/README.md @@ -88,3 +88,8 @@ Animations won't autostart when view is reached via performSegueWithIdentifier. ## Tutorials Tutorials available on [Design+Code](https://designcode.io/swiftapp). + +## License + +Spring is released under the MIT license. See LICENSE for details. + diff --git a/Spring/BlurView.swift b/Spring/BlurView.swift index 6229e21..4583633 100644 --- a/Spring/BlurView.swift +++ b/Spring/BlurView.swift @@ -1,10 +1,24 @@ +// The MIT License (MIT) // -// BlurView.swift -// ShotsDemo +// Copyright (c) 2015 Meng To (meng@designcode.io) // -// Created by Meng To on 2014-07-04. -// Copyright (c) 2014 Meng To. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import UIKit diff --git a/Spring/Data.swift b/Spring/Data.swift index e1e6303..456e1e8 100644 --- a/Spring/Data.swift +++ b/Spring/Data.swift @@ -1,10 +1,24 @@ +// The MIT License (MIT) // -// Data.swift -// ShotsDemo +// Copyright (c) 2015 Meng To (meng@designcode.io) // -// Created by Meng To on 2014-07-04. -// Copyright (c) 2014 Meng To. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import UIKit diff --git a/Spring/DesignableButton.swift b/Spring/DesignableButton.swift index 9ad298c..5b0a9c7 100644 --- a/Spring/DesignableButton.swift +++ b/Spring/DesignableButton.swift @@ -1,10 +1,24 @@ +// The MIT License (MIT) // -// DesignableButton.swift -// 3DTransform +// Copyright (c) 2015 Meng To (meng@designcode.io) // -// Created by Meng To on 2014-11-27. -// Copyright (c) 2014 Meng To. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import UIKit diff --git a/Spring/DesignableImageView.swift b/Spring/DesignableImageView.swift index 3ad9bf8..60c5a16 100644 --- a/Spring/DesignableImageView.swift +++ b/Spring/DesignableImageView.swift @@ -1,10 +1,24 @@ +// The MIT License (MIT) // -// DesignableImageView.swift -// DesignCodeApp +// Copyright (c) 2015 Meng To (meng@designcode.io) // -// Created by Meng To on 2014-12-22. -// Copyright (c) 2014 Meng To. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import UIKit diff --git a/Spring/DesignableLabel.swift b/Spring/DesignableLabel.swift index 08e5d16..e982cb4 100644 --- a/Spring/DesignableLabel.swift +++ b/Spring/DesignableLabel.swift @@ -1,10 +1,24 @@ +// The MIT License (MIT) // -// DesignableLabel.swift -// 3DTransform +// Copyright (c) 2015 Meng To (meng@designcode.io) // -// Created by Meng To on 2014-11-27. -// Copyright (c) 2014 Meng To. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import UIKit diff --git a/Spring/DesignableTabBarController.swift b/Spring/DesignableTabBarController.swift index 846d71a..5637f80 100644 --- a/Spring/DesignableTabBarController.swift +++ b/Spring/DesignableTabBarController.swift @@ -1,10 +1,24 @@ +// The MIT License (MIT) // -// DesignableTabBarController.swift -// SpringApp +// Copyright (c) 2015 Meng To (meng@designcode.io) // -// Created by Meng To on 2015-01-18. -// Copyright (c) 2015 Meng To. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import UIKit diff --git a/Spring/DesignableTextField.swift b/Spring/DesignableTextField.swift index a16b083..7d70e2b 100644 --- a/Spring/DesignableTextField.swift +++ b/Spring/DesignableTextField.swift @@ -1,10 +1,24 @@ +// The MIT License (MIT) // -// DesignableTextField.swift -// 3DTransform +// Copyright (c) 2015 Meng To (meng@designcode.io) // -// Created by Meng To on 2014-11-27. -// Copyright (c) 2014 Meng To. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import UIKit diff --git a/Spring/DesignableTextView.swift b/Spring/DesignableTextView.swift index 621ecfa..cec69e6 100644 --- a/Spring/DesignableTextView.swift +++ b/Spring/DesignableTextView.swift @@ -1,10 +1,24 @@ +// The MIT License (MIT) // -// DesignableTextView.swift -// 3DTransform +// Copyright (c) 2015 Meng To (meng@designcode.io) // -// Created by Meng To on 2014-11-27. -// Copyright (c) 2014 Meng To. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import UIKit diff --git a/Spring/DesignableView.swift b/Spring/DesignableView.swift index 219ca4a..62cca91 100644 --- a/Spring/DesignableView.swift +++ b/Spring/DesignableView.swift @@ -1,10 +1,24 @@ +// The MIT License (MIT) // -// DesignableView.swift -// Spring +// Copyright (c) 2015 Meng To (meng@designcode.io) // -// Created by Meng To on 2014-07-04. -// Copyright (c) 2014 Meng To. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import UIKit diff --git a/Spring/ImageLoader.swift b/Spring/ImageLoader.swift index c452c45..fe13699 100755 --- a/Spring/ImageLoader.swift +++ b/Spring/ImageLoader.swift @@ -1,10 +1,25 @@ +// The MIT License (MIT) // -// ImageLoader.swift -// extension +// Copyright (c) 2014 Nate Lyman (https://github.com/natelyman/SwiftImageLoader) // -// Created by Nate Lyman on 7/5/14. -// Copyright (c) 2014 NateLyman.com. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + import UIKit import Foundation diff --git a/Spring/KeyboardAvoidingScrollView.swift b/Spring/KeyboardAvoidingScrollView.swift index 8e9570f..78a8852 100644 --- a/Spring/KeyboardAvoidingScrollView.swift +++ b/Spring/KeyboardAvoidingScrollView.swift @@ -1,10 +1,24 @@ +// The MIT License (MIT) // -// KeyboardAvoidingScrollView.swift -// DesignerNewsApp +// Copyright (c) 2015 Meng To (meng@designcode.io) // -// Created by Meng To on 2015-01-09. -// Copyright (c) 2015 Meng To. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import UIKit diff --git a/Spring/KeyboardLayoutConstraint.swift b/Spring/KeyboardLayoutConstraint.swift index bb285e4..b8dfe5e 100644 --- a/Spring/KeyboardLayoutConstraint.swift +++ b/Spring/KeyboardLayoutConstraint.swift @@ -1,10 +1,24 @@ +// The MIT License (MIT) // -// KeyboardLayoutConstraint.swift -// DesignerNewsApp +// Copyright (c) 2015 James Tang (j@jamztang.com) // -// Created by James Tang on 30/1/15. -// Copyright (c) 2015 Meng To. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import UIKit diff --git a/Spring/LoadingView.swift b/Spring/LoadingView.swift index 72536db..0e013a7 100644 --- a/Spring/LoadingView.swift +++ b/Spring/LoadingView.swift @@ -1,10 +1,24 @@ +// The MIT License (MIT) // -// LoadingView.swift -// DesignerNewsApp +// Copyright (c) 2015 Meng To (meng@designcode.io) // -// Created by Meng To on 2015-01-10. -// Copyright (c) 2015 Meng To. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import UIKit diff --git a/Spring/Misc.swift b/Spring/Misc.swift index 22a88c0..2e2f1ae 100644 --- a/Spring/Misc.swift +++ b/Spring/Misc.swift @@ -1,10 +1,24 @@ +// The MIT License (MIT) // -// Misc.swift -// ShotsDemo +// Copyright (c) 2015 Meng To (meng@designcode.io) // -// Created by Meng To on 2014-07-04. -// Copyright (c) 2014 Meng To. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import UIKit diff --git a/Spring/Spring.swift b/Spring/Spring.swift index b6170ba..32926bb 100644 --- a/Spring/Spring.swift +++ b/Spring/Spring.swift @@ -1,10 +1,24 @@ +// The MIT License (MIT) // -// Spring.swift -// SpringApp +// Copyright (c) 2015 Meng To (meng@designcode.io) // -// Created by James Tang on 15/1/15. -// Copyright (c) 2015 Meng To. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import UIKit diff --git a/Spring/SpringAnimation.swift b/Spring/SpringAnimation.swift index ceb679a..ff5d787 100644 --- a/Spring/SpringAnimation.swift +++ b/Spring/SpringAnimation.swift @@ -1,10 +1,24 @@ +// The MIT License (MIT) // -// SpringAnimation.swift -// ShotsDemo +// Copyright (c) 2015 Meng To (meng@designcode.io) // -// Created by Meng To on 2014-07-04. -// Copyright (c) 2014 Meng To. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import UIKit diff --git a/Spring/SpringButton.swift b/Spring/SpringButton.swift index e5620d7..ddbfc8f 100644 --- a/Spring/SpringButton.swift +++ b/Spring/SpringButton.swift @@ -1,10 +1,24 @@ +// The MIT License (MIT) // -// SpringButton.swift -// DesignerNewsApp +// Copyright (c) 2015 Meng To (meng@designcode.io) // -// Created by Meng To on 2014-12-31. -// Copyright (c) 2014 Meng To. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import UIKit diff --git a/Spring/SpringImageView.swift b/Spring/SpringImageView.swift index 4c3d34a..ac65cbf 100644 --- a/Spring/SpringImageView.swift +++ b/Spring/SpringImageView.swift @@ -1,10 +1,24 @@ +// The MIT License (MIT) // -// SpringImageView.swift -// SpringApp +// Copyright (c) 2015 Meng To (meng@designcode.io) // -// Created by James Tang on 15/1/15. -// Copyright (c) 2015 Meng To. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import UIKit diff --git a/Spring/SpringLabel.swift b/Spring/SpringLabel.swift index afa07a7..3adc0ef 100644 --- a/Spring/SpringLabel.swift +++ b/Spring/SpringLabel.swift @@ -1,10 +1,24 @@ +// The MIT License (MIT) // -// SpringLabel.swift -// SpringApp +// Copyright (c) 2015 Meng To (meng@designcode.io) // -// Created by James Tang on 15/1/15. -// Copyright (c) 2015 Meng To. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import UIKit diff --git a/Spring/SpringTextField.swift b/Spring/SpringTextField.swift index a2a1262..a5b389e 100644 --- a/Spring/SpringTextField.swift +++ b/Spring/SpringTextField.swift @@ -1,10 +1,24 @@ +// The MIT License (MIT) // -// SpringTextField.swift -// SpringApp +// Copyright (c) 2015 Meng To (meng@designcode.io) // -// Created by James Tang on 15/1/15. -// Copyright (c) 2015 Meng To. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import UIKit diff --git a/Spring/SpringTextView.swift b/Spring/SpringTextView.swift index 050c26f..22184c0 100644 --- a/Spring/SpringTextView.swift +++ b/Spring/SpringTextView.swift @@ -1,10 +1,24 @@ +// The MIT License (MIT) // -// SpringTextView.swift -// SpringApp +// Copyright (c) 2015 Meng To (meng@designcode.io) // -// Created by James Tang on 15/1/15. -// Copyright (c) 2015 Meng To. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import UIKit diff --git a/Spring/SpringView.swift b/Spring/SpringView.swift index a238557..f495905 100644 --- a/Spring/SpringView.swift +++ b/Spring/SpringView.swift @@ -1,10 +1,24 @@ +// The MIT License (MIT) // -// SpringView.swift -// DesignerNewsApp +// Copyright (c) 2015 Meng To (meng@designcode.io) // -// Created by Meng To on 2015-01-01. -// Copyright (c) 2015 Meng To. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import UIKit diff --git a/Spring/TransitionManager.swift b/Spring/TransitionManager.swift index b87a5a3..3167a57 100644 --- a/Spring/TransitionManager.swift +++ b/Spring/TransitionManager.swift @@ -1,10 +1,24 @@ +// The MIT License (MIT) // -// TransitionManager.swift -// DesignerNewsApp +// Copyright (c) 2015 Meng To (meng@designcode.io) // -// Created by Meng To on 2015-01-10. -// Copyright (c) 2015 Meng To. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import UIKit diff --git a/Spring/TransitionZoom.swift b/Spring/TransitionZoom.swift index 5ae5459..da1f4bc 100644 --- a/Spring/TransitionZoom.swift +++ b/Spring/TransitionZoom.swift @@ -1,10 +1,24 @@ +// The MIT License (MIT) // -// TransitionZoom.swift -// DesignerNewsApp +// Copyright (c) 2015 Meng To (meng@designcode.io) // -// Created by Meng To on 2015-01-11. -// Copyright (c) 2015 Meng To. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import UIKit diff --git a/Spring/UnwindSegue.swift b/Spring/UnwindSegue.swift index 8b21957..a9aae71 100644 --- a/Spring/UnwindSegue.swift +++ b/Spring/UnwindSegue.swift @@ -1,10 +1,24 @@ +// The MIT License (MIT) // -// UnwindSegue.swift -// MyApp +// Copyright (c) 2015 Meng To (meng@designcode.io) // -// Created by Meng To on 2014-11-24. -// Copyright (c) 2014 Meng To. All rights reserved. +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import UIKit From c0e7f20203f29290088fe3af1fff767e19b03d46 Mon Sep 17 00:00:00 2001 From: Meng To Date: Sun, 1 Feb 2015 15:51:46 +0700 Subject: [PATCH 003/126] Remove unnecessary files --- Spring/Data.swift | 59 ------------------------- Spring/KeyboardAvoidingScrollView.swift | 29 ------------ 2 files changed, 88 deletions(-) delete mode 100644 Spring/Data.swift delete mode 100644 Spring/KeyboardAvoidingScrollView.swift diff --git a/Spring/Data.swift b/Spring/Data.swift deleted file mode 100644 index 456e1e8..0000000 --- a/Spring/Data.swift +++ /dev/null @@ -1,59 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015 Meng To (meng@designcode.io) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -import UIKit - -func getData() -> Array> { - - var data = [ - [ - "title" : "Bug", - "author": "Mike | Creative Mints", - "image" : "image", - "avatar": "avatar", - "text" : "You guys, the new How To Draw: drawing and sketching objects and environments from your imagination book by S. Robertson is just amazing! I spent the whole weekend gobbling it up and of course I couldn't help but take the watercolors myself! :)\n\nFill up the gas tank and go check out the attachment!\n\nBehance" - ], - [ - "title": "Secret Trips", - "author": "Alexander Zaytsev", - "image": "image2", - "avatar": "avatar2", - "text" : "Hey,\n\nI'm working on app for tracking your trips.\n\nSee the attachments as always." - ], - [ - "title": "Ford Model T - Comic", - "author": "Konstantin Datz", - "image": "image3", - "avatar": "avatar3", - "text" : "hey guys,\n\nhope you are doing well :)\n\ni was working on a comic version of the old Ford Model T in my spare time. im still not 100% happy with the background but wanted to come to an end.\n\nalso atteched the large version and if you are interested a comparison of the rendering and the postwork.\n\nplease let me know if you like it ♥\n\ncheers!" - ], - [ - "title": "Music", - "author": "Rovane Durso", - "image": "image4", - "avatar": "avatar4", - "text" : "hope you all had a good weekend!\n\nbig pixel version attached." - ], - ] - - return data -} \ No newline at end of file diff --git a/Spring/KeyboardAvoidingScrollView.swift b/Spring/KeyboardAvoidingScrollView.swift deleted file mode 100644 index 78a8852..0000000 --- a/Spring/KeyboardAvoidingScrollView.swift +++ /dev/null @@ -1,29 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015 Meng To (meng@designcode.io) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -import UIKit - -class KeyboardAvoidingScrollView: UIScrollView, UITextFieldDelegate, UITextViewDelegate { - - - -} From 1dbbeaf5e73e098cec973e281107922fa40b43f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Schneider?= Date: Sun, 1 Feb 2015 13:27:55 +0100 Subject: [PATCH 004/126] Remove deleted file references. --- SpringApp.xcodeproj/project.pbxproj | 8 -------- 1 file changed, 8 deletions(-) diff --git a/SpringApp.xcodeproj/project.pbxproj b/SpringApp.xcodeproj/project.pbxproj index d920c5d..d156ef2 100644 --- a/SpringApp.xcodeproj/project.pbxproj +++ b/SpringApp.xcodeproj/project.pbxproj @@ -15,7 +15,6 @@ 1A4FDA531A6E44A70099D309 /* LoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A4FDA2A1A6E44270099D309 /* LoadingView.swift */; }; 1A4FDA541A6E44A70099D309 /* LoadingView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A4FDA2B1A6E44270099D309 /* LoadingView.xib */; }; 1A4FDA551A6E44A70099D309 /* BlurView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 961888D31A66BF9000295A64 /* BlurView.swift */; }; - 1A4FDA561A6E44A70099D309 /* Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = 961888D41A66BF9000295A64 /* Data.swift */; }; 1A4FDA571A6E44A70099D309 /* DesignableButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 961888D51A66BF9000295A64 /* DesignableButton.swift */; }; 1A4FDA581A6E44A70099D309 /* DesignableImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 961888D61A66BF9000295A64 /* DesignableImageView.swift */; }; 1A4FDA591A6E44A70099D309 /* DesignableLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 961888D71A66BF9000295A64 /* DesignableLabel.swift */; }; @@ -24,7 +23,6 @@ 1A4FDA5C1A6E44A70099D309 /* DesignableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 961888DA1A66BF9000295A64 /* DesignableView.swift */; }; 1A4FDA5D1A6E44A70099D309 /* DesignableTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 969775D31A6AD6AC009B4B79 /* DesignableTabBarController.swift */; }; 1A4FDA5E1A6E44A70099D309 /* ImageLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 961888DB1A66BF9000295A64 /* ImageLoader.swift */; }; - 1A4FDA5F1A6E44A70099D309 /* KeyboardAvoidingScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 961888DC1A66BF9000295A64 /* KeyboardAvoidingScrollView.swift */; }; 1A4FDA601A6E44A70099D309 /* Misc.swift in Sources */ = {isa = PBXBuildFile; fileRef = 961888DF1A66BF9000295A64 /* Misc.swift */; }; 1A4FDA611A6E44A70099D309 /* Spring.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AD08AC61A676D5800160D45 /* Spring.swift */; }; 1A4FDA621A6E44A70099D309 /* SpringAnimation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 961888E01A66BF9000295A64 /* SpringAnimation.swift */; }; @@ -110,7 +108,6 @@ 1AF3F11C1A6776760090E8F9 /* SpringTextField.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SpringTextField.swift; sourceTree = ""; }; 1AF3F11D1A6776760090E8F9 /* SpringTextView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SpringTextView.swift; sourceTree = ""; }; 961888D31A66BF9000295A64 /* BlurView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BlurView.swift; sourceTree = ""; }; - 961888D41A66BF9000295A64 /* Data.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Data.swift; sourceTree = ""; }; 961888D51A66BF9000295A64 /* DesignableButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DesignableButton.swift; sourceTree = ""; }; 961888D61A66BF9000295A64 /* DesignableImageView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DesignableImageView.swift; sourceTree = ""; }; 961888D71A66BF9000295A64 /* DesignableLabel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DesignableLabel.swift; sourceTree = ""; }; @@ -118,7 +115,6 @@ 961888D91A66BF9000295A64 /* DesignableTextView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DesignableTextView.swift; sourceTree = ""; }; 961888DA1A66BF9000295A64 /* DesignableView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DesignableView.swift; sourceTree = ""; }; 961888DB1A66BF9000295A64 /* ImageLoader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageLoader.swift; sourceTree = ""; }; - 961888DC1A66BF9000295A64 /* KeyboardAvoidingScrollView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyboardAvoidingScrollView.swift; sourceTree = ""; }; 961888DF1A66BF9000295A64 /* Misc.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Misc.swift; sourceTree = ""; }; 961888E01A66BF9000295A64 /* SpringAnimation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SpringAnimation.swift; sourceTree = ""; }; 961888E11A66BF9000295A64 /* SpringButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SpringButton.swift; sourceTree = ""; }; @@ -215,7 +211,6 @@ 1A4FDA2A1A6E44270099D309 /* LoadingView.swift */, 1A4FDA2B1A6E44270099D309 /* LoadingView.xib */, 961888D31A66BF9000295A64 /* BlurView.swift */, - 961888D41A66BF9000295A64 /* Data.swift */, 961888D51A66BF9000295A64 /* DesignableButton.swift */, 961888D61A66BF9000295A64 /* DesignableImageView.swift */, 961888D71A66BF9000295A64 /* DesignableLabel.swift */, @@ -224,7 +219,6 @@ 961888DA1A66BF9000295A64 /* DesignableView.swift */, 969775D31A6AD6AC009B4B79 /* DesignableTabBarController.swift */, 961888DB1A66BF9000295A64 /* ImageLoader.swift */, - 961888DC1A66BF9000295A64 /* KeyboardAvoidingScrollView.swift */, 1A585F3F1A7B9530007EEB7D /* KeyboardLayoutConstraint.swift */, 961888DF1A66BF9000295A64 /* Misc.swift */, 1AD08AC61A676D5800160D45 /* Spring.swift */, @@ -484,9 +478,7 @@ 1A4FDA5B1A6E44A70099D309 /* DesignableTextView.swift in Sources */, 1A4FDA671A6E44A70099D309 /* SpringTextView.swift in Sources */, 1A4FDA641A6E44A70099D309 /* SpringImageView.swift in Sources */, - 1A4FDA5F1A6E44A70099D309 /* KeyboardAvoidingScrollView.swift in Sources */, 1A4FDA581A6E44A70099D309 /* DesignableImageView.swift in Sources */, - 1A4FDA561A6E44A70099D309 /* Data.swift in Sources */, 1A4FDA601A6E44A70099D309 /* Misc.swift in Sources */, 1A4FDA611A6E44A70099D309 /* Spring.swift in Sources */, 1A4FDA5A1A6E44A70099D309 /* DesignableTextField.swift in Sources */, From b162881a78a26f54a50adad0df16c3488ba3e8c8 Mon Sep 17 00:00:00 2001 From: Meng To Date: Sun, 1 Feb 2015 19:41:48 +0700 Subject: [PATCH 005/126] Fixed Storyboard warnings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When using .framework, must add module “Spring” in Identity Inspector. --- SpringApp/Base.lproj/Main.storyboard | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SpringApp/Base.lproj/Main.storyboard b/SpringApp/Base.lproj/Main.storyboard index a0437d8..1b4a473 100644 --- a/SpringApp/Base.lproj/Main.storyboard +++ b/SpringApp/Base.lproj/Main.storyboard @@ -1,7 +1,7 @@ - + - + @@ -469,7 +469,7 @@ - - + @@ -130,67 +132,58 @@ - - - - + - - - + + - - - + + - - + - - + + - + @@ -210,7 +203,7 @@ - + @@ -256,40 +249,35 @@ - + - - - - + + - - + - + @@ -309,7 +297,7 @@ - + @@ -339,145 +327,130 @@ - + - - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - + @@ -531,7 +504,7 @@ - + From ce0b195cb0be5b1fb971bdd0d314c048b6d33bca Mon Sep 17 00:00:00 2001 From: Meng To Date: Fri, 7 Oct 2016 17:45:07 -0400 Subject: [PATCH 102/126] Async Image Loader Extension MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently, AsyncImageView and AsyncButton aren’t working, so I suggest that you use this Async UIImageView extension as an alternative until we figure out a solution. Would love help on those. --- Spring/Misc.swift | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/Spring/Misc.swift b/Spring/Misc.swift index 95cb32b..234f268 100644 --- a/Spring/Misc.swift +++ b/Spring/Misc.swift @@ -232,3 +232,31 @@ public func timeAgoSinceDate(date: Date, numericDates: Bool) -> String { } } + +extension UIImageView { + func setImage(url: URL, contentMode mode: UIViewContentMode = .scaleAspectFit, placeholderImage: UIImage?) { + contentMode = mode + URLSession.shared.dataTask(with: url) { (data, response, error) in + guard + let httpURLResponse = response as? HTTPURLResponse, httpURLResponse.statusCode == 200, + let mimeType = response?.mimeType, mimeType.hasPrefix("image"), + let data = data, error == nil, + let image = UIImage(data: data) + else { + self.image = placeholderImage + return + } + DispatchQueue.main.async() { () -> Void in + self.image = image + + } + }.resume() + } + func setImage(urlString: String, contentMode mode: UIViewContentMode = .scaleAspectFit, placeholderImage: UIImage?) { + guard let url = URL(string: urlString) else { + image = placeholderImage + return + } + setImage(url: url, contentMode: mode, placeholderImage: placeholderImage) + } +} From 9ee8ddbc001929f09c06c23d18f1c5be9e7256cb Mon Sep 17 00:00:00 2001 From: Victor Santos Date: Sun, 9 Oct 2016 13:13:36 -0400 Subject: [PATCH 103/126] Fix issue in AsyncImageView and AsyncButton --- Spring/ImageLoader.swift | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Spring/ImageLoader.swift b/Spring/ImageLoader.swift index 263e1af..8fe470a 100755 --- a/Spring/ImageLoader.swift +++ b/Spring/ImageLoader.swift @@ -37,7 +37,19 @@ public class ImageLoader { public func imageForUrl(urlString: String, completionHandler: @escaping(_ image: UIImage?, _ url: String) -> ()) { DispatchQueue.global(qos: DispatchQoS.QoSClass.background).async { - let data: NSData? = self.cache.object(forKey: urlString as NSString)! as NSData + var data: NSData? + + if let dataCache = self.cache.object(forKey: urlString as NSString){ + data = (dataCache) as NSData + + }else{ + if (URL(string: urlString) != nil) + { + data = NSData(contentsOf: URL(string: urlString)!) + }else{ + return + } + } if let goodData = data { let image = UIImage(data: goodData as Data) From 95fff54cee89d24c9cfb83613fe2846dd99744c2 Mon Sep 17 00:00:00 2001 From: Victor Santos Date: Mon, 10 Oct 2016 20:54:24 -0400 Subject: [PATCH 104/126] Fix asynchronous image cache --- Spring/ImageLoader.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Spring/ImageLoader.swift b/Spring/ImageLoader.swift index 8fe470a..a5d8504 100755 --- a/Spring/ImageLoader.swift +++ b/Spring/ImageLoader.swift @@ -46,6 +46,7 @@ public class ImageLoader { if (URL(string: urlString) != nil) { data = NSData(contentsOf: URL(string: urlString)!) + self.cache.setObject(data!, forKey: urlString as NSString) }else{ return } From 0c5a350273ff7980be8cb9712a709b0e737ae169 Mon Sep 17 00:00:00 2001 From: sabyrzhan Date: Thu, 27 Oct 2016 16:49:14 +0600 Subject: [PATCH 105/126] Add check against nil before adding to cache --- Spring/ImageLoader.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Spring/ImageLoader.swift b/Spring/ImageLoader.swift index a5d8504..bcb626d 100755 --- a/Spring/ImageLoader.swift +++ b/Spring/ImageLoader.swift @@ -46,7 +46,9 @@ public class ImageLoader { if (URL(string: urlString) != nil) { data = NSData(contentsOf: URL(string: urlString)!) - self.cache.setObject(data!, forKey: urlString as NSString) + if data != nil { + self.cache.setObject(data!, forKey: urlString as NSString) + } }else{ return } From f502c5ecd673f22f75283e109eb0513fb80c1e86 Mon Sep 17 00:00:00 2001 From: shoheiyokoyama Date: Sun, 30 Oct 2016 18:21:32 +0900 Subject: [PATCH 106/126] fixed C-style syntax --- Spring/AutoTextView.swift | 2 +- Spring/DesignableTextField.swift | 4 ++-- Spring/DesignableTextView.swift | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Spring/AutoTextView.swift b/Spring/AutoTextView.swift index 9a0dfd3..1d0c7e6 100644 --- a/Spring/AutoTextView.swift +++ b/Spring/AutoTextView.swift @@ -18,7 +18,7 @@ public class AutoTextView: UITextView { size.height = 0 } - contentInset = UIEdgeInsetsMake(-4, -4, -4, -4) + contentInset = UIEdgeInsets(top: -4, left: -4, bottom: -4, right: -4) layoutIfNeeded() return size diff --git a/Spring/DesignableTextField.swift b/Spring/DesignableTextField.swift index 8cf32d0..ecaf442 100644 --- a/Spring/DesignableTextField.swift +++ b/Spring/DesignableTextField.swift @@ -89,8 +89,8 @@ import UIKit paragraphStyle.lineSpacing = lineHeight let attributedString = NSMutableAttributedString(string: text!) - attributedString.addAttribute(NSParagraphStyleAttributeName, value: paragraphStyle, range: NSMakeRange(0, attributedString.length)) - attributedString.addAttribute(NSFontAttributeName, value: font!, range: NSMakeRange(0, attributedString.length)) + attributedString.addAttribute(NSParagraphStyleAttributeName, value: paragraphStyle, range: NSRange(location: 0, length: attributedString.length)) + attributedString.addAttribute(NSFontAttributeName, value: font!, range: NSRange(location: 0, length: attributedString.length)) self.attributedText = attributedString } diff --git a/Spring/DesignableTextView.swift b/Spring/DesignableTextView.swift index 630941c..5a74fe1 100644 --- a/Spring/DesignableTextView.swift +++ b/Spring/DesignableTextView.swift @@ -49,10 +49,10 @@ import UIKit let paragraphStyle = NSMutableParagraphStyle() paragraphStyle.lineSpacing = lineHeight - + let attributedString = NSMutableAttributedString(string: text!) - attributedString.addAttribute(NSParagraphStyleAttributeName, value: paragraphStyle, range: NSMakeRange(0, attributedString.length)) - attributedString.addAttribute(NSFontAttributeName, value: font!, range: NSMakeRange(0, attributedString.length)) + attributedString.addAttribute(NSParagraphStyleAttributeName, value: paragraphStyle, range: NSRange(location: 0, length: attributedString.length)) + attributedString.addAttribute(NSFontAttributeName, value: font!, range: NSRange(location: 0, length: attributedString.length)) self.attributedText = attributedString } From a3d937f2afef44389094836a140c47d3de863516 Mon Sep 17 00:00:00 2001 From: Meng To Date: Tue, 4 Apr 2017 15:01:41 -0400 Subject: [PATCH 107/126] Xcode 8.3 update --- Spring/Misc.swift | 4 ++-- Spring/Spring.swift | 6 +++--- SpringApp.xcodeproj/project.pbxproj | 8 +++++++- .../xcshareddata/xcschemes/Spring.xcscheme | 2 +- .../xcshareddata/xcschemes/SpringApp.xcscheme | 2 +- 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/Spring/Misc.swift b/Spring/Misc.swift index 234f268..b6af7d5 100644 --- a/Spring/Misc.swift +++ b/Spring/Misc.swift @@ -43,7 +43,7 @@ public func htmlToAttributedString(text: String) -> NSAttributedString! { } public func degreesToRadians(degrees: CGFloat) -> CGFloat { - return degrees * CGFloat(M_PI / 180) + return degrees * CGFloat(CGFloat.pi / 180) } public func delay(delay:Double, closure: @escaping ()->()) { @@ -202,7 +202,7 @@ public func timeAgoSinceDate(date: Date, numericDates: Bool) -> String { return "1w" } } else if (day >= 2) { - return "\(components.day)d" + return "\(components.day ?? 2)d" } else if (day >= 1){ if (numericDates){ return "1d" diff --git a/Spring/Spring.swift b/Spring/Spring.swift index 46819b1..a6ffff0 100644 --- a/Spring/Spring.swift +++ b/Spring/Spring.swift @@ -227,7 +227,7 @@ public class Spring : NSObject { scaleY = 2*force case .Fall: animateFrom = false - rotate = 15 * CGFloat(M_PI/180) + rotate = 15 * CGFloat(CGFloat.pi/180) y = 600*force case .Shake: let animation = CAKeyframeAnimation() @@ -262,7 +262,7 @@ public class Spring : NSObject { animation.keyPath = "transform" animation.fromValue = NSValue(caTransform3D: CATransform3DMakeRotation(0, 0, 0, 0)) animation.toValue = NSValue(caTransform3D: - CATransform3DConcat(perspective, CATransform3DMakeRotation(CGFloat(M_PI), 0, 1, 0))) + CATransform3DConcat(perspective, CATransform3DMakeRotation(CGFloat(CGFloat.pi), 0, 1, 0))) animation.duration = CFTimeInterval(duration) animation.beginTime = CACurrentMediaTime() + CFTimeInterval(delay) animation.timingFunction = getTimingFunction(curve: curve) @@ -276,7 +276,7 @@ public class Spring : NSObject { animation.fromValue = NSValue(caTransform3D: CATransform3DMakeRotation(0, 0, 0, 0)) animation.toValue = NSValue(caTransform3D: - CATransform3DConcat(perspective,CATransform3DMakeRotation(CGFloat(M_PI), 1, 0, 0))) + CATransform3DConcat(perspective,CATransform3DMakeRotation(CGFloat(CGFloat.pi), 1, 0, 0))) animation.duration = CFTimeInterval(duration) animation.beginTime = CACurrentMediaTime() + CFTimeInterval(delay) animation.timingFunction = getTimingFunction(curve: curve) diff --git a/SpringApp.xcodeproj/project.pbxproj b/SpringApp.xcodeproj/project.pbxproj index 69ef340..bf9efd0 100644 --- a/SpringApp.xcodeproj/project.pbxproj +++ b/SpringApp.xcodeproj/project.pbxproj @@ -408,7 +408,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 0800; + LastUpgradeCheck = 0830; ORGANIZATIONNAME = "Meng To"; TargetAttributes = { 1A4FDA321A6E44780099D309 = { @@ -598,6 +598,7 @@ 1A4FDA4D1A6E44780099D309 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -624,6 +625,7 @@ 1A4FDA4E1A6E44780099D309 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -688,8 +690,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"; @@ -732,8 +736,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"; diff --git a/SpringApp.xcodeproj/xcshareddata/xcschemes/Spring.xcscheme b/SpringApp.xcodeproj/xcshareddata/xcschemes/Spring.xcscheme index 3748fca..39102c6 100644 --- a/SpringApp.xcodeproj/xcshareddata/xcschemes/Spring.xcscheme +++ b/SpringApp.xcodeproj/xcshareddata/xcschemes/Spring.xcscheme @@ -1,6 +1,6 @@ Date: Fri, 16 Jun 2017 14:14:36 -0400 Subject: [PATCH 108/126] Swift 4 --- Spring/DesignableLabel.swift | 4 +- Spring/DesignableTabBarController.swift | 6 +-- Spring/DesignableTextField.swift | 6 +-- Spring/DesignableTextView.swift | 4 +- Spring/KeyboardLayoutConstraint.swift | 4 +- Spring/Misc.swift | 5 +- Spring/Spring.swift | 2 +- SpringApp.xcodeproj/project.pbxproj | 48 ++++++++++++++----- .../xcshareddata/xcschemes/Spring.xcscheme | 2 +- .../xcshareddata/xcschemes/SpringApp.xcscheme | 2 +- SpringApp/CodeViewController.swift | 2 + SpringApp/SpringViewController.swift | 4 +- 12 files changed, 57 insertions(+), 32 deletions(-) diff --git a/Spring/DesignableLabel.swift b/Spring/DesignableLabel.swift index 146174b..c232f69 100644 --- a/Spring/DesignableLabel.swift +++ b/Spring/DesignableLabel.swift @@ -33,8 +33,8 @@ import UIKit paragraphStyle.lineSpacing = lineHeight let attributedString = NSMutableAttributedString(string: text!) - attributedString.addAttribute(NSParagraphStyleAttributeName, value: paragraphStyle, range: NSMakeRange(0, attributedString.length)) - attributedString.addAttribute(NSFontAttributeName, value: font!, range: NSMakeRange(0, attributedString.length)) + attributedString.addAttribute(NSAttributedStringKey.paragraphStyle, value: paragraphStyle, range: NSMakeRange(0, attributedString.length)) + attributedString.addAttribute(NSAttributedStringKey.font, value: font!, range: NSMakeRange(0, attributedString.length)) self.attributedText = attributedString } diff --git a/Spring/DesignableTabBarController.swift b/Spring/DesignableTabBarController.swift index 4e55cfc..0857e87 100644 --- a/Spring/DesignableTabBarController.swift +++ b/Spring/DesignableTabBarController.swift @@ -27,20 +27,20 @@ import UIKit @IBInspectable var normalTint: UIColor = UIColor.clear { didSet { UITabBar.appearance().tintColor = normalTint - UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: normalTint], for: UIControlState()) + UITabBarItem.appearance().setTitleTextAttributes([NSAttributedStringKey.foregroundColor.rawValue: normalTint], for: UIControlState()) } } @IBInspectable var selectedTint: UIColor = UIColor.clear { didSet { UITabBar.appearance().tintColor = selectedTint - UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: selectedTint], for:UIControlState.selected) + UITabBarItem.appearance().setTitleTextAttributes([NSAttributedStringKey.foregroundColor.rawValue: selectedTint], for:UIControlState.selected) } } @IBInspectable var fontName: String = "" { didSet { - UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: normalTint, NSFontAttributeName: UIFont(name: fontName, size: 11)!], for: UIControlState()) + UITabBarItem.appearance().setTitleTextAttributes([NSAttributedStringKey.foregroundColor.rawValue: normalTint, NSAttributedStringKey.font.rawValue: UIFont(name: fontName, size: 11)!], for: UIControlState()) } } diff --git a/Spring/DesignableTextField.swift b/Spring/DesignableTextField.swift index ecaf442..8be2717 100644 --- a/Spring/DesignableTextField.swift +++ b/Spring/DesignableTextField.swift @@ -26,7 +26,7 @@ import UIKit @IBInspectable public var placeholderColor: UIColor = UIColor.clear { didSet { - attributedPlaceholder = NSAttributedString(string: placeholder!, attributes: [NSForegroundColorAttributeName: placeholderColor]) + attributedPlaceholder = NSAttributedString(string: placeholder!, attributes: [NSAttributedStringKey.foregroundColor: placeholderColor]) layoutSubviews() } @@ -89,8 +89,8 @@ import UIKit paragraphStyle.lineSpacing = lineHeight let attributedString = NSMutableAttributedString(string: text!) - attributedString.addAttribute(NSParagraphStyleAttributeName, value: paragraphStyle, range: NSRange(location: 0, length: attributedString.length)) - attributedString.addAttribute(NSFontAttributeName, value: font!, range: NSRange(location: 0, length: attributedString.length)) + attributedString.addAttribute(NSAttributedStringKey.paragraphStyle, value: paragraphStyle, range: NSRange(location: 0, length: attributedString.length)) + attributedString.addAttribute(NSAttributedStringKey.font, value: font!, range: NSRange(location: 0, length: attributedString.length)) self.attributedText = attributedString } diff --git a/Spring/DesignableTextView.swift b/Spring/DesignableTextView.swift index 5a74fe1..e716b96 100644 --- a/Spring/DesignableTextView.swift +++ b/Spring/DesignableTextView.swift @@ -51,8 +51,8 @@ import UIKit paragraphStyle.lineSpacing = lineHeight let attributedString = NSMutableAttributedString(string: text!) - attributedString.addAttribute(NSParagraphStyleAttributeName, value: paragraphStyle, range: NSRange(location: 0, length: attributedString.length)) - attributedString.addAttribute(NSFontAttributeName, value: font!, range: NSRange(location: 0, length: attributedString.length)) + attributedString.addAttribute(NSAttributedStringKey.paragraphStyle, value: paragraphStyle, range: NSRange(location: 0, length: attributedString.length)) + attributedString.addAttribute(NSAttributedStringKey.font, value: font!, range: NSRange(location: 0, length: attributedString.length)) self.attributedText = attributedString } diff --git a/Spring/KeyboardLayoutConstraint.swift b/Spring/KeyboardLayoutConstraint.swift index 57ef6f8..79dc8cb 100644 --- a/Spring/KeyboardLayoutConstraint.swift +++ b/Spring/KeyboardLayoutConstraint.swift @@ -42,7 +42,7 @@ public class KeyboardLayoutConstraint: NSLayoutConstraint { // MARK: Notification - func keyboardWillShowNotification(_ notification: Notification) { + @objc func keyboardWillShowNotification(_ notification: Notification) { if let userInfo = notification.userInfo { if let frameValue = userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue { let frame = frameValue.cgRectValue @@ -73,7 +73,7 @@ public class KeyboardLayoutConstraint: NSLayoutConstraint { } - func keyboardWillHideNotification(_ notification: NSNotification) { + @objc func keyboardWillHideNotification(_ notification: NSNotification) { keyboardVisibleHeight = 0 self.updateConstant() diff --git a/Spring/Misc.swift b/Spring/Misc.swift index b6af7d5..2a80c01 100644 --- a/Spring/Misc.swift +++ b/Spring/Misc.swift @@ -31,10 +31,11 @@ public extension String { } public func htmlToAttributedString(text: String) -> NSAttributedString! { - let htmlData = text.data(using: String.Encoding.utf8, allowLossyConversion: false) + guard let htmlData = text.data(using: String.Encoding.utf8, allowLossyConversion: false) else { + return NSAttributedString() } let htmlString: NSAttributedString? do { - htmlString = try NSAttributedString(data: htmlData!, options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], documentAttributes: nil) + htmlString = try NSAttributedString(data: htmlData, options: [NSAttributedString.DocumentReadingOptionKey.documentType:NSAttributedString.DocumentType.html], documentAttributes: nil) } catch _ { htmlString = nil } diff --git a/Spring/Spring.swift b/Spring/Spring.swift index a6ffff0..5b60b1b 100644 --- a/Spring/Spring.swift +++ b/Spring/Spring.swift @@ -68,7 +68,7 @@ public class Spring : NSObject { NotificationCenter.default.addObserver(self, selector: #selector(Spring.didBecomeActiveNotification(_:)), name: NSNotification.Name.UIApplicationDidBecomeActive, object: nil) } - func didBecomeActiveNotification(_ notification: NSNotification) { + @objc func didBecomeActiveNotification(_ notification: NSNotification) { if shouldAnimateAfterActive { alpha = 0 animate() diff --git a/SpringApp.xcodeproj/project.pbxproj b/SpringApp.xcodeproj/project.pbxproj index bf9efd0..008a95a 100644 --- a/SpringApp.xcodeproj/project.pbxproj +++ b/SpringApp.xcodeproj/project.pbxproj @@ -408,25 +408,25 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 0830; + LastUpgradeCheck = 0900; ORGANIZATIONNAME = "Meng To"; TargetAttributes = { 1A4FDA321A6E44780099D309 = { CreatedOnToolsVersion = 6.1.1; - LastSwiftMigration = 0800; + LastSwiftMigration = 0900; }; 1A4FDA3C1A6E44780099D309 = { CreatedOnToolsVersion = 6.1.1; - LastSwiftMigration = 0800; + LastSwiftMigration = 0900; TestTargetID = 9641173A1A5BE90A000E3A5A; }; 9641173A1A5BE90A000E3A5A = { CreatedOnToolsVersion = 6.2; - LastSwiftMigration = 0800; + LastSwiftMigration = 0900; }; 9641174F1A5BE90A000E3A5A = { CreatedOnToolsVersion = 6.2; - LastSwiftMigration = 0800; + LastSwiftMigration = 0900; TestTargetID = 9641173A1A5BE90A000E3A5A; }; }; @@ -615,7 +615,8 @@ PRODUCT_BUNDLE_IDENTIFIER = "designcode.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Off; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -639,7 +640,8 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Off; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -658,7 +660,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.jamztang.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Off; + SWIFT_VERSION = 4.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SpringApp.app/SpringApp"; }; name = Debug; @@ -672,7 +675,8 @@ PRODUCT_BUNDLE_IDENTIFIER = "com.jamztang.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Off; + SWIFT_VERSION = 4.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SpringApp.app/SpringApp"; }; name = Release; @@ -685,14 +689,20 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; 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_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -720,6 +730,7 @@ ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_SWIFT3_OBJC_INFERENCE = Off; }; name = Debug; }; @@ -731,14 +742,20 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; 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_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -757,6 +774,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.2; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; + SWIFT_SWIFT3_OBJC_INFERENCE = Off; VALIDATE_PRODUCT = YES; }; name = Release; @@ -770,7 +788,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "designcode.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Off; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -785,7 +804,8 @@ PRODUCT_BUNDLE_IDENTIFIER = "designcode.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Off; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; @@ -802,7 +822,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "designcode.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Off; + SWIFT_VERSION = 4.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SpringApp.app/SpringApp"; }; name = Debug; @@ -816,7 +837,8 @@ PRODUCT_BUNDLE_IDENTIFIER = "designcode.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Off; + SWIFT_VERSION = 4.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SpringApp.app/SpringApp"; }; name = Release; diff --git a/SpringApp.xcodeproj/xcshareddata/xcschemes/Spring.xcscheme b/SpringApp.xcodeproj/xcshareddata/xcschemes/Spring.xcscheme index 39102c6..ecfaae8 100644 --- a/SpringApp.xcodeproj/xcshareddata/xcschemes/Spring.xcscheme +++ b/SpringApp.xcodeproj/xcshareddata/xcschemes/Spring.xcscheme @@ -1,6 +1,6 @@ Date: Mon, 19 Jun 2017 11:37:17 -0400 Subject: [PATCH 109/126] Update README.md --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index cd07e95..278fa38 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,5 @@ -![](https://dl.dropboxusercontent.com/u/7990919/Crawler/SpringSwift3.jpg) - -## Updated for Swift 3.0 -Requires Xcode 8 and Swift 3. +## Updated for Swift 4 +Requires Xcode 9 and Swift 4. ## Installation Drop in the Spring folder to your Xcode project (make sure to enable "Copy items if needed" and "Create groups"). From 4bc88153e711f77d1a543bac6abdbc064e304692 Mon Sep 17 00:00:00 2001 From: JPwharton Date: Wed, 28 Jun 2017 09:35:37 -0400 Subject: [PATCH 110/126] Quick fix to placeHolder crash, removal of bang operator. --- Spring/DesignableTextField.swift | 7 ++++--- Spring/DesignableTextView.swift | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Spring/DesignableTextField.swift b/Spring/DesignableTextField.swift index 8be2717..edc5a2b 100644 --- a/Spring/DesignableTextField.swift +++ b/Spring/DesignableTextField.swift @@ -26,7 +26,8 @@ import UIKit @IBInspectable public var placeholderColor: UIColor = UIColor.clear { didSet { - attributedPlaceholder = NSAttributedString(string: placeholder!, attributes: [NSAttributedStringKey.foregroundColor: placeholderColor]) + guard let placeholder = placeholder else { return } + attributedPlaceholder = NSAttributedString(string: placeholder, attributes: [NSAttributedStringKey.foregroundColor: placeholderColor]) layoutSubviews() } @@ -83,12 +84,12 @@ import UIKit @IBInspectable public var lineHeight: CGFloat = 1.5 { didSet { let font = UIFont(name: self.font!.fontName, size: self.font!.pointSize) - let text = self.text + guard let text = self.text else { return } let paragraphStyle = NSMutableParagraphStyle() paragraphStyle.lineSpacing = lineHeight - let attributedString = NSMutableAttributedString(string: text!) + let attributedString = NSMutableAttributedString(string: text) attributedString.addAttribute(NSAttributedStringKey.paragraphStyle, value: paragraphStyle, range: NSRange(location: 0, length: attributedString.length)) attributedString.addAttribute(NSAttributedStringKey.font, value: font!, range: NSRange(location: 0, length: attributedString.length)) diff --git a/Spring/DesignableTextView.swift b/Spring/DesignableTextView.swift index e716b96..3db40b3 100644 --- a/Spring/DesignableTextView.swift +++ b/Spring/DesignableTextView.swift @@ -45,12 +45,12 @@ import UIKit @IBInspectable public var lineHeight: CGFloat = 1.5 { didSet { let font = UIFont(name: self.font!.fontName, size: self.font!.pointSize) - let text = self.text + guard let text = self.text else { return } let paragraphStyle = NSMutableParagraphStyle() paragraphStyle.lineSpacing = lineHeight - let attributedString = NSMutableAttributedString(string: text!) + let attributedString = NSMutableAttributedString(string: text) attributedString.addAttribute(NSAttributedStringKey.paragraphStyle, value: paragraphStyle, range: NSRange(location: 0, length: attributedString.length)) attributedString.addAttribute(NSAttributedStringKey.font, value: font!, range: NSRange(location: 0, length: attributedString.length)) From 57e4b4fe97bc7a9010d30c03adaefea730f9989a Mon Sep 17 00:00:00 2001 From: JPwharton Date: Wed, 28 Jun 2017 09:44:05 -0400 Subject: [PATCH 111/126] Additional force unwrap fixes --- Spring/DesignableLabel.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Spring/DesignableLabel.swift b/Spring/DesignableLabel.swift index c232f69..0520d77 100644 --- a/Spring/DesignableLabel.swift +++ b/Spring/DesignableLabel.swift @@ -27,12 +27,12 @@ import UIKit @IBInspectable public var lineHeight: CGFloat = 1.5 { didSet { let font = UIFont(name: self.font.fontName, size: self.font.pointSize) - let text = self.text + guard let text = self.text else { return } let paragraphStyle = NSMutableParagraphStyle() paragraphStyle.lineSpacing = lineHeight - let attributedString = NSMutableAttributedString(string: text!) + let attributedString = NSMutableAttributedString(string: text) attributedString.addAttribute(NSAttributedStringKey.paragraphStyle, value: paragraphStyle, range: NSMakeRange(0, attributedString.length)) attributedString.addAttribute(NSAttributedStringKey.font, value: font!, range: NSMakeRange(0, attributedString.length)) From 386804a3beabe27830ce506f44058c878c591622 Mon Sep 17 00:00:00 2001 From: Jonathan Pacheco Date: Sun, 2 Jul 2017 17:35:03 -0500 Subject: [PATCH 112/126] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 278fa38..8c84806 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Drop in the Spring folder to your Xcode project (make sure to enable "Copy items Or via CocoaPods: ``` use_frameworks! -pod 'Spring', :git => 'https://github.com/MengTo/Spring.git', :branch => 'swift3' +pod 'Spring', :git => 'https://github.com/MengTo/Spring.git', :branch => 'swift4' ``` ## Usage with Storyboard From fa94a8743211fb8c2dc9171ad6672095175ef405 Mon Sep 17 00:00:00 2001 From: Jake Manning Date: Tue, 11 Jul 2017 18:07:46 -0700 Subject: [PATCH 113/126] Update SoundPlayer.swift MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue #217 details this problem. It isn’t possible to use SoundPlayer unless these are public --- Spring/SoundPlayer.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Spring/SoundPlayer.swift b/Spring/SoundPlayer.swift index 122ba42..d2451d9 100644 --- a/Spring/SoundPlayer.swift +++ b/Spring/SoundPlayer.swift @@ -23,7 +23,7 @@ import UIKit import AudioToolbox -struct SoundPlayer { +public struct SoundPlayer { static var filename : String? static var enabled : Bool = true @@ -32,7 +32,7 @@ struct SoundPlayer { static var cache = [URL:SystemSoundID]() } - static func playSound(soundFile: String) { + public static func playSound(soundFile: String) { if !enabled { return From 94b2f06c10a006805d7b797c01674ad73556c37e Mon Sep 17 00:00:00 2001 From: thedoritos Date: Tue, 1 Aug 2017 10:57:11 +0900 Subject: [PATCH 114/126] Fix compile error --- Spring/DesignableTabBarController.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Spring/DesignableTabBarController.swift b/Spring/DesignableTabBarController.swift index 0857e87..dc55036 100644 --- a/Spring/DesignableTabBarController.swift +++ b/Spring/DesignableTabBarController.swift @@ -27,20 +27,20 @@ import UIKit @IBInspectable var normalTint: UIColor = UIColor.clear { didSet { UITabBar.appearance().tintColor = normalTint - UITabBarItem.appearance().setTitleTextAttributes([NSAttributedStringKey.foregroundColor.rawValue: normalTint], for: UIControlState()) + UITabBarItem.appearance().setTitleTextAttributes([NSAttributedStringKey.foregroundColor: normalTint], for: UIControlState()) } } @IBInspectable var selectedTint: UIColor = UIColor.clear { didSet { UITabBar.appearance().tintColor = selectedTint - UITabBarItem.appearance().setTitleTextAttributes([NSAttributedStringKey.foregroundColor.rawValue: selectedTint], for:UIControlState.selected) + UITabBarItem.appearance().setTitleTextAttributes([NSAttributedStringKey.foregroundColor: selectedTint], for:UIControlState.selected) } } @IBInspectable var fontName: String = "" { didSet { - UITabBarItem.appearance().setTitleTextAttributes([NSAttributedStringKey.foregroundColor.rawValue: normalTint, NSAttributedStringKey.font.rawValue: UIFont(name: fontName, size: 11)!], for: UIControlState()) + UITabBarItem.appearance().setTitleTextAttributes([NSAttributedStringKey.foregroundColor: normalTint, NSAttributedStringKey.font: UIFont(name: fontName, size: 11)!], for: UIControlState()) } } From ed10baac4fecd152882a2d301b45a2769c1240c7 Mon Sep 17 00:00:00 2001 From: Hamza Ansari Date: Fri, 20 Oct 2017 14:16:21 +0530 Subject: [PATCH 115/126] Substring deprecated fix --- Spring/Misc.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Spring/Misc.swift b/Spring/Misc.swift index 2a80c01..b2a27ce 100644 --- a/Spring/Misc.swift +++ b/Spring/Misc.swift @@ -67,7 +67,7 @@ public extension UIColor { if hex.hasPrefix("#") { let index = hex.index(hex.startIndex, offsetBy: 1) - hex = hex.substring(from: index) + hex = String(hex[index...]) } let scanner = Scanner(string: hex) From 803a87ed53c942e5dfb1af8b77e3e68850d742d9 Mon Sep 17 00:00:00 2001 From: Tony Mann Date: Sun, 8 Jan 2017 14:41:45 -0800 Subject: [PATCH 116/126] Fix repeat count in the swing animation --- Spring/Spring.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Spring/Spring.swift b/Spring/Spring.swift index 5b60b1b..a563044 100644 --- a/Spring/Spring.swift +++ b/Spring/Spring.swift @@ -358,6 +358,7 @@ public class Spring : NSObject { animation.keyTimes = [0, 0.2, 0.4, 0.6, 0.8, 1] animation.duration = CFTimeInterval(duration) animation.isAdditive = true + animation.repeatCount = repeatCount animation.beginTime = CACurrentMediaTime() + CFTimeInterval(delay) layer.add(animation, forKey: "swing") } From 18b1dbc8a8b346b179413c77fa96f5cb0f78624f Mon Sep 17 00:00:00 2001 From: phatmann Date: Tue, 31 Oct 2017 22:22:06 -0700 Subject: [PATCH 117/126] Use master branch for pod --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8c84806..0209267 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Drop in the Spring folder to your Xcode project (make sure to enable "Copy items Or via CocoaPods: ``` use_frameworks! -pod 'Spring', :git => 'https://github.com/MengTo/Spring.git', :branch => 'swift4' +pod 'Spring', :git => 'https://github.com/MengTo/Spring.git' ``` ## Usage with Storyboard From df1ecb65322254f36430c02b632e4724d9cdf720 Mon Sep 17 00:00:00 2001 From: Iori Kanno Date: Wed, 15 Nov 2017 03:11:07 +0900 Subject: [PATCH 118/126] Fix repeat count in the flip animation --- Spring/Spring.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Spring/Spring.swift b/Spring/Spring.swift index a563044..ed2808b 100644 --- a/Spring/Spring.swift +++ b/Spring/Spring.swift @@ -264,6 +264,7 @@ public class Spring : NSObject { animation.toValue = NSValue(caTransform3D: CATransform3DConcat(perspective, CATransform3DMakeRotation(CGFloat(CGFloat.pi), 0, 1, 0))) animation.duration = CFTimeInterval(duration) + animation.repeatCount = repeatCount animation.beginTime = CACurrentMediaTime() + CFTimeInterval(delay) animation.timingFunction = getTimingFunction(curve: curve) layer.add(animation, forKey: "3d") @@ -278,6 +279,7 @@ public class Spring : NSObject { animation.toValue = NSValue(caTransform3D: CATransform3DConcat(perspective,CATransform3DMakeRotation(CGFloat(CGFloat.pi), 1, 0, 0))) animation.duration = CFTimeInterval(duration) + animation.repeatCount = repeatCount animation.beginTime = CACurrentMediaTime() + CFTimeInterval(delay) animation.timingFunction = getTimingFunction(curve: curve) layer.add(animation, forKey: "3d") From be6285482de439bf768f6ebf20c8899aa0c5a57c Mon Sep 17 00:00:00 2001 From: Meng To Date: Wed, 20 Dec 2017 15:20:28 -0500 Subject: [PATCH 119/126] cocoapods 1.0.4 with Swift 4 --- .swift-version | 1 + Spring.podspec | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 .swift-version diff --git a/.swift-version b/.swift-version new file mode 100644 index 0000000..b8626c4 --- /dev/null +++ b/.swift-version @@ -0,0 +1 @@ +4 diff --git a/Spring.podspec b/Spring.podspec index a381019..cf59266 100644 --- a/Spring.podspec +++ b/Spring.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'Spring' - s.version = '1.0.3' + s.version = '1.0.4' s.license = 'MIT' s.summary = 'A library to simplify iOS animations in Swift.' s.homepage = 'https://github.com/MengTo/Spring' From 19b04d730d3edabbb02a39e58121d1d3220690ee Mon Sep 17 00:00:00 2001 From: Meng To Date: Wed, 20 Dec 2017 15:21:26 -0500 Subject: [PATCH 120/126] Podspec 1.0.5 Swift 4 --- Spring.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Spring.podspec b/Spring.podspec index cf59266..6176a50 100644 --- a/Spring.podspec +++ b/Spring.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'Spring' - s.version = '1.0.4' + s.version = '1.0.5' s.license = 'MIT' s.summary = 'A library to simplify iOS animations in Swift.' s.homepage = 'https://github.com/MengTo/Spring' From 9a9148948446786caf12ae0158d15116a3229ed0 Mon Sep 17 00:00:00 2001 From: Larry Aasen Date: Sun, 31 Dec 2017 10:23:58 -0500 Subject: [PATCH 121/126] Added support for tvOS. Updated podspec file for tvOS. Eliminated class KeyboardLayoutConstraint on tvOS. Eliminated class LoadingView on tvOS. --- Spring.podspec | 4 +++- Spring/KeyboardLayoutConstraint.swift | 4 ++++ Spring/LoadingView.swift | 3 +++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Spring.podspec b/Spring.podspec index 6176a50..b05c6ee 100644 --- a/Spring.podspec +++ b/Spring.podspec @@ -8,6 +8,8 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/MengTo/Spring.git', :tag => s.version.to_s } s.requires_arc = true s.ios.deployment_target = '8.0' + s.tvos.deployment_target = '11.0' s.source_files = 'Spring/*.swift' - s.resources = ['Spring/*.xib', 'SpringApp/*.xcassets'] + s.ios.resources = ['Spring/*.xib', 'SpringApp/*.xcassets'] + s.tvos.resources = ['SpringApp/*.xcassets'] end diff --git a/Spring/KeyboardLayoutConstraint.swift b/Spring/KeyboardLayoutConstraint.swift index 79dc8cb..7d1cf9c 100644 --- a/Spring/KeyboardLayoutConstraint.swift +++ b/Spring/KeyboardLayoutConstraint.swift @@ -22,11 +22,14 @@ import UIKit +#if !os(tvOS) +@available(tvOS, unavailable) public class KeyboardLayoutConstraint: NSLayoutConstraint { private var offset : CGFloat = 0 private var keyboardVisibleHeight : CGFloat = 0 + @available(tvOS, unavailable) override public func awakeFromNib() { super.awakeFromNib() @@ -104,3 +107,4 @@ public class KeyboardLayoutConstraint: NSLayoutConstraint { } } +#endif diff --git a/Spring/LoadingView.swift b/Spring/LoadingView.swift index 047aaa9..5f62ce8 100644 --- a/Spring/LoadingView.swift +++ b/Spring/LoadingView.swift @@ -22,6 +22,8 @@ import UIKit +#if !os(tvOS) +@available(tvOS, unavailable) public class LoadingView: UIView { @IBOutlet public weak var indicatorView: SpringView! @@ -81,3 +83,4 @@ public extension UIView { } } +#endif From dc55d6dfc8a4bb4fbe3fd683644d363deb4ad749 Mon Sep 17 00:00:00 2001 From: Juan Carbonell Date: Fri, 21 Sep 2018 11:07:05 +0200 Subject: [PATCH 122/126] FIX Updated for Xcode 10 and Swift 4.2 --- Spring/AsyncButton.swift | 2 +- Spring/BlurView.swift | 2 +- Spring/DesignableLabel.swift | 4 ++-- Spring/DesignableTabBarController.swift | 18 ++++++++-------- Spring/DesignableTextField.swift | 14 ++++++------- Spring/DesignableTextView.swift | 10 ++++----- Spring/KeyboardLayoutConstraint.swift | 14 ++++++------- Spring/Misc.swift | 4 ++-- Spring/Spring.swift | 28 ++++++++++++------------- Spring/SpringAnimation.swift | 2 +- SpringApp.xcodeproj/project.pbxproj | 8 +++---- 11 files changed, 53 insertions(+), 53 deletions(-) diff --git a/Spring/AsyncButton.swift b/Spring/AsyncButton.swift index 7d9f2db..6e03ac9 100644 --- a/Spring/AsyncButton.swift +++ b/Spring/AsyncButton.swift @@ -28,7 +28,7 @@ public class AsyncButton: UIButton { private var placeholderImage = [UInt:UIImage]() - public func setImageURL(url: NSURL?, placeholderImage placeholder:UIImage?, forState state:UIControlState) { + public func setImageURL(url: NSURL?, placeholderImage placeholder:UIImage?, forState state:UIControl.State) { imageURL[state.rawValue] = url placeholderImage[state.rawValue] = placeholder diff --git a/Spring/BlurView.swift b/Spring/BlurView.swift index 2defcf6..8de1611 100644 --- a/Spring/BlurView.swift +++ b/Spring/BlurView.swift @@ -22,7 +22,7 @@ import UIKit -public func insertBlurView (view: UIView, style: UIBlurEffectStyle) -> UIVisualEffectView { +public func insertBlurView (view: UIView, style: UIBlurEffect.Style) -> UIVisualEffectView { view.backgroundColor = UIColor.clear let blurEffect = UIBlurEffect(style: style) diff --git a/Spring/DesignableLabel.swift b/Spring/DesignableLabel.swift index 0520d77..8d6994b 100644 --- a/Spring/DesignableLabel.swift +++ b/Spring/DesignableLabel.swift @@ -33,8 +33,8 @@ import UIKit paragraphStyle.lineSpacing = lineHeight let attributedString = NSMutableAttributedString(string: text) - attributedString.addAttribute(NSAttributedStringKey.paragraphStyle, value: paragraphStyle, range: NSMakeRange(0, attributedString.length)) - attributedString.addAttribute(NSAttributedStringKey.font, value: font!, range: NSMakeRange(0, attributedString.length)) + attributedString.addAttribute(NSAttributedString.Key.paragraphStyle, value: paragraphStyle, range: NSMakeRange(0, attributedString.length)) + attributedString.addAttribute(NSAttributedString.Key.font, value: font!, range: NSMakeRange(0, attributedString.length)) self.attributedText = attributedString } diff --git a/Spring/DesignableTabBarController.swift b/Spring/DesignableTabBarController.swift index dc55036..f75fbcc 100644 --- a/Spring/DesignableTabBarController.swift +++ b/Spring/DesignableTabBarController.swift @@ -27,20 +27,20 @@ import UIKit @IBInspectable var normalTint: UIColor = UIColor.clear { didSet { UITabBar.appearance().tintColor = normalTint - UITabBarItem.appearance().setTitleTextAttributes([NSAttributedStringKey.foregroundColor: normalTint], for: UIControlState()) + UITabBarItem.appearance().setTitleTextAttributes([NSAttributedString.Key.foregroundColor: normalTint], for: UIControl.State()) } } @IBInspectable var selectedTint: UIColor = UIColor.clear { didSet { UITabBar.appearance().tintColor = selectedTint - UITabBarItem.appearance().setTitleTextAttributes([NSAttributedStringKey.foregroundColor: selectedTint], for:UIControlState.selected) + UITabBarItem.appearance().setTitleTextAttributes([NSAttributedString.Key.foregroundColor: selectedTint], for:UIControl.State.selected) } } @IBInspectable var fontName: String = "" { didSet { - UITabBarItem.appearance().setTitleTextAttributes([NSAttributedStringKey.foregroundColor: normalTint, NSAttributedStringKey.font: UIFont(name: fontName, size: 11)!], for: UIControlState()) + UITabBarItem.appearance().setTitleTextAttributes([NSAttributedString.Key.foregroundColor: normalTint, NSAttributedString.Key.font: UIFont(name: fontName, size: 11)!], for: UIControl.State()) } } @@ -48,7 +48,7 @@ import UIKit didSet { if let image = firstSelectedImage { var tabBarItems = self.tabBar.items as [UITabBarItem]! - tabBarItems?[0].selectedImage = image.withRenderingMode(UIImageRenderingMode.alwaysTemplate) + tabBarItems?[0].selectedImage = image.withRenderingMode(UIImage.RenderingMode.alwaysTemplate) } } } @@ -57,7 +57,7 @@ import UIKit didSet { if let image = secondSelectedImage { var tabBarItems = self.tabBar.items as [UITabBarItem]! - tabBarItems?[1].selectedImage = image.withRenderingMode(UIImageRenderingMode.alwaysTemplate) + tabBarItems?[1].selectedImage = image.withRenderingMode(UIImage.RenderingMode.alwaysTemplate) } } } @@ -66,7 +66,7 @@ import UIKit didSet { if let image = thirdSelectedImage { var tabBarItems = self.tabBar.items as [UITabBarItem]! - tabBarItems?[2].selectedImage = image.withRenderingMode(UIImageRenderingMode.alwaysTemplate) + tabBarItems?[2].selectedImage = image.withRenderingMode(UIImage.RenderingMode.alwaysTemplate) } } } @@ -75,7 +75,7 @@ import UIKit didSet { if let image = fourthSelectedImage { var tabBarItems = self.tabBar.items as [UITabBarItem]! - tabBarItems?[3].selectedImage = image.withRenderingMode(UIImageRenderingMode.alwaysTemplate) + tabBarItems?[3].selectedImage = image.withRenderingMode(UIImage.RenderingMode.alwaysTemplate) } } } @@ -84,7 +84,7 @@ import UIKit didSet { if let image = fifthSelectedImage { var tabBarItems = self.tabBar.items as [UITabBarItem]! - tabBarItems?[4].selectedImage = image.withRenderingMode(UIImageRenderingMode.alwaysTemplate) + tabBarItems?[4].selectedImage = image.withRenderingMode(UIImage.RenderingMode.alwaysTemplate) } } } @@ -94,7 +94,7 @@ import UIKit for item in self.tabBar.items as [UITabBarItem]! { if let image = item.image { - item.image = image.imageWithColor(tintColor: self.normalTint).withRenderingMode(UIImageRenderingMode.alwaysOriginal) + item.image = image.imageWithColor(tintColor: self.normalTint).withRenderingMode(UIImage.RenderingMode.alwaysOriginal) } } } diff --git a/Spring/DesignableTextField.swift b/Spring/DesignableTextField.swift index edc5a2b..e334a8e 100644 --- a/Spring/DesignableTextField.swift +++ b/Spring/DesignableTextField.swift @@ -27,7 +27,7 @@ import UIKit @IBInspectable public var placeholderColor: UIColor = UIColor.clear { didSet { guard let placeholder = placeholder else { return } - attributedPlaceholder = NSAttributedString(string: placeholder, attributes: [NSAttributedStringKey.foregroundColor: placeholderColor]) + attributedPlaceholder = NSAttributedString(string: placeholder, attributes: [NSAttributedString.Key.foregroundColor: placeholderColor]) layoutSubviews() } @@ -37,10 +37,10 @@ import UIKit didSet { let padding = UIView(frame: CGRect(x: 0, y: 0, width: sidePadding, height: sidePadding)) - leftViewMode = UITextFieldViewMode.always + leftViewMode = UITextField.ViewMode.always leftView = padding - rightViewMode = UITextFieldViewMode.always + rightViewMode = UITextField.ViewMode.always rightView = padding } } @@ -49,7 +49,7 @@ import UIKit didSet { let padding = UIView(frame: CGRect(x: 0, y: 0, width: leftPadding, height: 0)) - leftViewMode = UITextFieldViewMode.always + leftViewMode = UITextField.ViewMode.always leftView = padding } } @@ -58,7 +58,7 @@ import UIKit didSet { let padding = UIView(frame: CGRect(x: 0, y: 0, width: rightPadding, height: 0)) - rightViewMode = UITextFieldViewMode.always + rightViewMode = UITextField.ViewMode.always rightView = padding } } @@ -90,8 +90,8 @@ import UIKit paragraphStyle.lineSpacing = lineHeight let attributedString = NSMutableAttributedString(string: text) - attributedString.addAttribute(NSAttributedStringKey.paragraphStyle, value: paragraphStyle, range: NSRange(location: 0, length: attributedString.length)) - attributedString.addAttribute(NSAttributedStringKey.font, value: font!, range: NSRange(location: 0, length: attributedString.length)) + attributedString.addAttribute(NSAttributedString.Key.paragraphStyle, value: paragraphStyle, range: NSRange(location: 0, length: attributedString.length)) + attributedString.addAttribute(NSAttributedString.Key.font, value: font!, range: NSRange(location: 0, length: attributedString.length)) self.attributedText = attributedString } diff --git a/Spring/DesignableTextView.swift b/Spring/DesignableTextView.swift index 3db40b3..779298a 100644 --- a/Spring/DesignableTextView.swift +++ b/Spring/DesignableTextView.swift @@ -41,7 +41,7 @@ import UIKit layer.cornerRadius = cornerRadius } } - + @IBInspectable public var lineHeight: CGFloat = 1.5 { didSet { let font = UIFont(name: self.font!.fontName, size: self.font!.pointSize) @@ -49,13 +49,13 @@ import UIKit let paragraphStyle = NSMutableParagraphStyle() paragraphStyle.lineSpacing = lineHeight - + let attributedString = NSMutableAttributedString(string: text) - attributedString.addAttribute(NSAttributedStringKey.paragraphStyle, value: paragraphStyle, range: NSRange(location: 0, length: attributedString.length)) - attributedString.addAttribute(NSAttributedStringKey.font, value: font!, range: NSRange(location: 0, length: attributedString.length)) + attributedString.addAttribute(NSAttributedString.Key.paragraphStyle, value: paragraphStyle, range: NSRange(location: 0, length: attributedString.length)) + attributedString.addAttribute(NSAttributedString.Key.font, value: font!, range: NSRange(location: 0, length: attributedString.length)) self.attributedText = attributedString } } - + } diff --git a/Spring/KeyboardLayoutConstraint.swift b/Spring/KeyboardLayoutConstraint.swift index 7d1cf9c..1b45a56 100644 --- a/Spring/KeyboardLayoutConstraint.swift +++ b/Spring/KeyboardLayoutConstraint.swift @@ -35,8 +35,8 @@ public class KeyboardLayoutConstraint: NSLayoutConstraint { offset = constant - NotificationCenter.default.addObserver(self, selector: #selector(KeyboardLayoutConstraint.keyboardWillShowNotification(_:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(KeyboardLayoutConstraint.keyboardWillHideNotification(_:)), name: NSNotification.Name.UIKeyboardWillHide, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(KeyboardLayoutConstraint.keyboardWillShowNotification(_:)), name: UIWindow.keyboardWillShowNotification, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(KeyboardLayoutConstraint.keyboardWillHideNotification(_:)), name: UIWindow.keyboardWillHideNotification, object: nil) } deinit { @@ -47,16 +47,16 @@ public class KeyboardLayoutConstraint: NSLayoutConstraint { @objc func keyboardWillShowNotification(_ notification: Notification) { if let userInfo = notification.userInfo { - if let frameValue = userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue { + if let frameValue = userInfo[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue { let frame = frameValue.cgRectValue keyboardVisibleHeight = frame.size.height } self.updateConstant() - switch (userInfo[UIKeyboardAnimationDurationUserInfoKey] as? NSNumber, userInfo[UIKeyboardAnimationCurveUserInfoKey] as? NSNumber) { + switch (userInfo[UIResponder.keyboardAnimationDurationUserInfoKey] as? NSNumber, userInfo[UIResponder.keyboardAnimationCurveUserInfoKey] as? NSNumber) { case let (.some(duration), .some(curve)): - let options = UIViewAnimationOptions(rawValue: curve.uintValue) + let options = UIView.AnimationOptions(rawValue: curve.uintValue) UIView.animate( withDuration: TimeInterval(duration.doubleValue), @@ -82,10 +82,10 @@ public class KeyboardLayoutConstraint: NSLayoutConstraint { if let userInfo = notification.userInfo { - switch (userInfo[UIKeyboardAnimationDurationUserInfoKey] as? NSNumber, userInfo[UIKeyboardAnimationCurveUserInfoKey] as? NSNumber) { + switch (userInfo[UIResponder.keyboardAnimationDurationUserInfoKey] as? NSNumber, userInfo[UIResponder.keyboardAnimationCurveUserInfoKey] as? NSNumber) { case let (.some(duration), .some(curve)): - let options = UIViewAnimationOptions(rawValue: curve.uintValue) + let options = UIView.AnimationOptions(rawValue: curve.uintValue) UIView.animate( withDuration: TimeInterval(duration.doubleValue), diff --git a/Spring/Misc.swift b/Spring/Misc.swift index b2a27ce..c0a9add 100644 --- a/Spring/Misc.swift +++ b/Spring/Misc.swift @@ -235,7 +235,7 @@ public func timeAgoSinceDate(date: Date, numericDates: Bool) -> String { } extension UIImageView { - func setImage(url: URL, contentMode mode: UIViewContentMode = .scaleAspectFit, placeholderImage: UIImage?) { + func setImage(url: URL, contentMode mode: UIView.ContentMode = .scaleAspectFit, placeholderImage: UIImage?) { contentMode = mode URLSession.shared.dataTask(with: url) { (data, response, error) in guard @@ -253,7 +253,7 @@ extension UIImageView { } }.resume() } - func setImage(urlString: String, contentMode mode: UIViewContentMode = .scaleAspectFit, placeholderImage: UIImage?) { + func setImage(urlString: String, contentMode mode: UIView.ContentMode = .scaleAspectFit, placeholderImage: UIImage?) { guard let url = URL(string: urlString) else { image = placeholderImage return diff --git a/Spring/Spring.swift b/Spring/Spring.swift index ed2808b..cf86e1a 100644 --- a/Spring/Spring.swift +++ b/Spring/Spring.swift @@ -65,7 +65,7 @@ public class Spring : NSObject { } func commonInit() { - NotificationCenter.default.addObserver(self, selector: #selector(Spring.didBecomeActiveNotification(_:)), name: NSNotification.Name.UIApplicationDidBecomeActive, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(Spring.didBecomeActiveNotification(_:)), name: UIApplication.didBecomeActiveNotification, object: nil) } @objc func didBecomeActiveNotification(_ notification: NSNotification) { @@ -77,7 +77,7 @@ public class Spring : NSObject { } deinit { - NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIApplicationDidBecomeActive, object: nil) + NotificationCenter.default.removeObserver(self, name: UIApplication.didBecomeActiveNotification, object: nil) } private var autostart: Bool { set { self.view.autostart = newValue } get { return self.view.autostart }} @@ -370,10 +370,10 @@ public class Spring : NSObject { func getTimingFunction(curve: String) -> CAMediaTimingFunction { if let curve = AnimationCurve(rawValue: curve) { switch curve { - case .EaseIn: return CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseIn) - case .EaseOut: return CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut) - case .EaseInOut: return CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) - case .Linear: return CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear) + case .EaseIn: return CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeIn) + case .EaseOut: return CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeOut) + case .EaseInOut: return CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut) + case .Linear: return CAMediaTimingFunction(name: CAMediaTimingFunctionName.linear) case .Spring: return CAMediaTimingFunction(controlPoints: 0.5, 1.1+Float(force/3), 1, 1) case .EaseInSine: return CAMediaTimingFunction(controlPoints: 0.47, 0, 0.745, 0.715) case .EaseOutSine: return CAMediaTimingFunction(controlPoints: 0.39, 0.575, 0.565, 1) @@ -401,19 +401,19 @@ public class Spring : NSObject { case .EaseInOutBack: return CAMediaTimingFunction(controlPoints: 0.68, -0.55, 0.265, 1.55) } } - return CAMediaTimingFunction(name: kCAMediaTimingFunctionDefault) + return CAMediaTimingFunction(name: CAMediaTimingFunctionName.default) } - func getAnimationOptions(curve: String) -> UIViewAnimationOptions { + func getAnimationOptions(curve: String) -> UIView.AnimationOptions { if let curve = AnimationCurve(rawValue: curve) { switch curve { - case .EaseIn: return UIViewAnimationOptions.curveEaseIn - case .EaseOut: return UIViewAnimationOptions.curveEaseOut - case .EaseInOut: return UIViewAnimationOptions() + case .EaseIn: return UIView.AnimationOptions.curveEaseIn + case .EaseOut: return UIView.AnimationOptions.curveEaseOut + case .EaseInOut: return UIView.AnimationOptions() default: break } } - return UIViewAnimationOptions.curveLinear + return UIView.AnimationOptions.curveLinear } public func animate() { @@ -479,7 +479,7 @@ public class Spring : NSObject { delay: TimeInterval(delay), usingSpringWithDamping: damping, initialSpringVelocity: velocity, - options: [getAnimationOptions(curve: curve), UIViewAnimationOptions.allowUserInteraction], + options: [getAnimationOptions(curve: curve), UIView.AnimationOptions.allowUserInteraction], animations: { [weak self] in if let _self = self { @@ -504,7 +504,7 @@ public class Spring : NSObject { completion() self?.resetAll() - }) + }) } diff --git a/Spring/SpringAnimation.swift b/Spring/SpringAnimation.swift index e237d3d..998882b 100644 --- a/Spring/SpringAnimation.swift +++ b/Spring/SpringAnimation.swift @@ -64,7 +64,7 @@ import UIKit UIView.animate( withDuration: duration, delay: 0, - options: UIViewAnimationOptions(), + options: UIView.AnimationOptions(), animations: { animations() }, completion: nil diff --git a/SpringApp.xcodeproj/project.pbxproj b/SpringApp.xcodeproj/project.pbxproj index 008a95a..8e701c1 100644 --- a/SpringApp.xcodeproj/project.pbxproj +++ b/SpringApp.xcodeproj/project.pbxproj @@ -616,7 +616,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_SWIFT3_OBJC_INFERENCE = Off; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -641,7 +641,7 @@ SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_SWIFT3_OBJC_INFERENCE = Off; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -789,7 +789,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "designcode.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_SWIFT3_OBJC_INFERENCE = Off; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -805,7 +805,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_SWIFT3_OBJC_INFERENCE = Off; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; From d761f575b0bd593c57718b53125908d9258ddc08 Mon Sep 17 00:00:00 2001 From: Meng To Date: Wed, 3 Oct 2018 11:16:39 -0400 Subject: [PATCH 123/126] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0209267..49a7fa5 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ## Updated for Swift 4 -Requires Xcode 9 and Swift 4. +Requires Xcode 10 and Swift 4.2. ## Installation Drop in the Spring folder to your Xcode project (make sure to enable "Copy items if needed" and "Create groups"). From d507c1244f944dcf675aa46fe024e2b2f40a662c Mon Sep 17 00:00:00 2001 From: Meng To Date: Wed, 3 Oct 2018 11:16:48 -0400 Subject: [PATCH 124/126] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 49a7fa5..34f1430 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -## Updated for Swift 4 +## Updated for Swift 4.2 Requires Xcode 10 and Swift 4.2. ## Installation From fafd0b2e8d4d46405bd86fa7ba84bb7f73a20b13 Mon Sep 17 00:00:00 2001 From: Meng To Date: Wed, 10 Oct 2018 13:23:42 -0400 Subject: [PATCH 125/126] Update Spring.podspec --- Spring.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Spring.podspec b/Spring.podspec index b05c6ee..a43ed30 100644 --- a/Spring.podspec +++ b/Spring.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'Spring' - s.version = '1.0.5' + s.version = '1.0.6' s.license = 'MIT' s.summary = 'A library to simplify iOS animations in Swift.' s.homepage = 'https://github.com/MengTo/Spring' From febc1fa3787b19f8dc21c48d5e7bb826ef46bb25 Mon Sep 17 00:00:00 2001 From: nhannlt Date: Fri, 26 Jul 2019 15:29:03 +0700 Subject: [PATCH 126/126] Upgrade to swift 5 --- Spring/DesignableTabBarController.swift | 19 +++++++------- Spring/Misc.swift | 6 ++--- SpringApp.xcodeproj/project.pbxproj | 33 ++++++++++--------------- 3 files changed, 26 insertions(+), 32 deletions(-) diff --git a/Spring/DesignableTabBarController.swift b/Spring/DesignableTabBarController.swift index f75fbcc..6c81095 100644 --- a/Spring/DesignableTabBarController.swift +++ b/Spring/DesignableTabBarController.swift @@ -47,7 +47,7 @@ import UIKit @IBInspectable var firstSelectedImage: UIImage? { didSet { if let image = firstSelectedImage { - var tabBarItems = self.tabBar.items as [UITabBarItem]! + var tabBarItems = self.tabBar.items as [UITabBarItem]? tabBarItems?[0].selectedImage = image.withRenderingMode(UIImage.RenderingMode.alwaysTemplate) } } @@ -56,7 +56,7 @@ import UIKit @IBInspectable var secondSelectedImage: UIImage? { didSet { if let image = secondSelectedImage { - var tabBarItems = self.tabBar.items as [UITabBarItem]! + var tabBarItems = self.tabBar.items as [UITabBarItem]? tabBarItems?[1].selectedImage = image.withRenderingMode(UIImage.RenderingMode.alwaysTemplate) } } @@ -65,7 +65,7 @@ import UIKit @IBInspectable var thirdSelectedImage: UIImage? { didSet { if let image = thirdSelectedImage { - var tabBarItems = self.tabBar.items as [UITabBarItem]! + var tabBarItems = self.tabBar.items as [UITabBarItem]? tabBarItems?[2].selectedImage = image.withRenderingMode(UIImage.RenderingMode.alwaysTemplate) } } @@ -74,7 +74,7 @@ import UIKit @IBInspectable var fourthSelectedImage: UIImage? { didSet { if let image = fourthSelectedImage { - var tabBarItems = self.tabBar.items as [UITabBarItem]! + var tabBarItems = self.tabBar.items as [UITabBarItem]? tabBarItems?[3].selectedImage = image.withRenderingMode(UIImage.RenderingMode.alwaysTemplate) } } @@ -83,7 +83,7 @@ import UIKit @IBInspectable var fifthSelectedImage: UIImage? { didSet { if let image = fifthSelectedImage { - var tabBarItems = self.tabBar.items as [UITabBarItem]! + var tabBarItems = self.tabBar.items as [UITabBarItem]? tabBarItems?[4].selectedImage = image.withRenderingMode(UIImage.RenderingMode.alwaysTemplate) } } @@ -91,10 +91,11 @@ import UIKit override func viewDidLoad() { super.viewDidLoad() - - for item in self.tabBar.items as [UITabBarItem]! { - if let image = item.image { - item.image = image.imageWithColor(tintColor: self.normalTint).withRenderingMode(UIImage.RenderingMode.alwaysOriginal) + if let items = self.tabBar.items { + for item in items { + if let image = item.image { + item.image = image.imageWithColor(tintColor: self.normalTint).withRenderingMode(UIImage.RenderingMode.alwaysOriginal) + } } } } diff --git a/Spring/Misc.swift b/Spring/Misc.swift index c0a9add..96024b8 100644 --- a/Spring/Misc.swift +++ b/Spring/Misc.swift @@ -23,9 +23,9 @@ import UIKit public extension String { - public var length: Int { return self.characters.count } + var length: Int { return self.count } - public func toURL() -> NSURL? { + func toURL() -> NSURL? { return NSURL(string: self) } } @@ -73,7 +73,7 @@ public extension UIColor { let scanner = Scanner(string: hex) var hexValue: CUnsignedLongLong = 0 if scanner.scanHexInt64(&hexValue) { - switch (hex.characters.count) { + switch (hex.count) { case 3: red = CGFloat((hexValue & 0xF00) >> 8) / 15.0 green = CGFloat((hexValue & 0x0F0) >> 4) / 15.0 diff --git a/SpringApp.xcodeproj/project.pbxproj b/SpringApp.xcodeproj/project.pbxproj index 8e701c1..a0e8956 100644 --- a/SpringApp.xcodeproj/project.pbxproj +++ b/SpringApp.xcodeproj/project.pbxproj @@ -413,20 +413,20 @@ TargetAttributes = { 1A4FDA321A6E44780099D309 = { CreatedOnToolsVersion = 6.1.1; - LastSwiftMigration = 0900; + LastSwiftMigration = 1020; }; 1A4FDA3C1A6E44780099D309 = { CreatedOnToolsVersion = 6.1.1; - LastSwiftMigration = 0900; + LastSwiftMigration = 1020; TestTargetID = 9641173A1A5BE90A000E3A5A; }; 9641173A1A5BE90A000E3A5A = { CreatedOnToolsVersion = 6.2; - LastSwiftMigration = 0900; + LastSwiftMigration = 1020; }; 9641174F1A5BE90A000E3A5A = { CreatedOnToolsVersion = 6.2; - LastSwiftMigration = 0900; + LastSwiftMigration = 1020; TestTargetID = 9641173A1A5BE90A000E3A5A; }; }; @@ -436,6 +436,7 @@ developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( + English, en, Base, ); @@ -615,8 +616,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "designcode.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - SWIFT_SWIFT3_OBJC_INFERENCE = Off; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -640,8 +640,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_SWIFT3_OBJC_INFERENCE = Off; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -660,8 +659,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.jamztang.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_SWIFT3_OBJC_INFERENCE = Off; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SpringApp.app/SpringApp"; }; name = Debug; @@ -675,8 +673,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "com.jamztang.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_SWIFT3_OBJC_INFERENCE = Off; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SpringApp.app/SpringApp"; }; name = Release; @@ -788,8 +785,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "designcode.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_SWIFT3_OBJC_INFERENCE = Off; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -804,8 +800,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "designcode.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_SWIFT3_OBJC_INFERENCE = Off; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; @@ -822,8 +817,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "designcode.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_SWIFT3_OBJC_INFERENCE = Off; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SpringApp.app/SpringApp"; }; name = Debug; @@ -837,8 +831,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "designcode.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_SWIFT3_OBJC_INFERENCE = Off; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SpringApp.app/SpringApp"; }; name = Release;