diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..dfe500f --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +github: [kharrison] diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..c929601 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,20 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Project** +This repo contains many projects, please state which project this issue is for. + +**Environment** +Please include at least the following details: +- Xcode version +- iOS version +- Device or simulator used to reproduce the bug + +**Describe the bug** +A clear and concise description of what the bug is. diff --git a/AdaptType/AdaptType.xcodeproj/project.pbxproj b/AdaptType/AdaptType.xcodeproj/project.pbxproj new file mode 100644 index 0000000..5390100 --- /dev/null +++ b/AdaptType/AdaptType.xcodeproj/project.pbxproj @@ -0,0 +1,344 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 53ED33A52165588D005E895D /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53ED33A42165588D005E895D /* AppDelegate.swift */; }; + 53ED33A72165588D005E895D /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53ED33A62165588D005E895D /* SettingsViewController.swift */; }; + 53ED33AA2165588D005E895D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 53ED33A82165588D005E895D /* Main.storyboard */; }; + 53ED33AC2165588E005E895D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 53ED33AB2165588E005E895D /* Assets.xcassets */; }; + 53ED33AF2165588E005E895D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 53ED33AD2165588E005E895D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 5379191D216B8B1F007E5997 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + 53ED33A12165588D005E895D /* AdaptType.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AdaptType.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 53ED33A42165588D005E895D /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 53ED33A62165588D005E895D /* SettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = ""; }; + 53ED33A92165588D005E895D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 53ED33AB2165588E005E895D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 53ED33AE2165588E005E895D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 53ED33B02165588E005E895D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 53ED339E2165588D005E895D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 53ED33982165588D005E895D = { + isa = PBXGroup; + children = ( + 5379191D216B8B1F007E5997 /* README.md */, + 53ED33A32165588D005E895D /* AdaptType */, + 53ED33A22165588D005E895D /* Products */, + ); + sourceTree = ""; + }; + 53ED33A22165588D005E895D /* Products */ = { + isa = PBXGroup; + children = ( + 53ED33A12165588D005E895D /* AdaptType.app */, + ); + name = Products; + sourceTree = ""; + }; + 53ED33A32165588D005E895D /* AdaptType */ = { + isa = PBXGroup; + children = ( + 53ED33A42165588D005E895D /* AppDelegate.swift */, + 53ED33A62165588D005E895D /* SettingsViewController.swift */, + 53ED33A82165588D005E895D /* Main.storyboard */, + 53ED33AB2165588E005E895D /* Assets.xcassets */, + 53ED33AD2165588E005E895D /* LaunchScreen.storyboard */, + 53ED33B02165588E005E895D /* Info.plist */, + ); + path = AdaptType; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 53ED33A02165588D005E895D /* AdaptType */ = { + isa = PBXNativeTarget; + buildConfigurationList = 53ED33B32165588E005E895D /* Build configuration list for PBXNativeTarget "AdaptType" */; + buildPhases = ( + 53ED339D2165588D005E895D /* Sources */, + 53ED339E2165588D005E895D /* Frameworks */, + 53ED339F2165588D005E895D /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = AdaptType; + productName = AdaptType; + productReference = 53ED33A12165588D005E895D /* AdaptType.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 53ED33992165588D005E895D /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1000; + LastUpgradeCheck = 1000; + ORGANIZATIONNAME = "Keith Harrison"; + TargetAttributes = { + 53ED33A02165588D005E895D = { + CreatedOnToolsVersion = 10.0; + LastSwiftMigration = 1120; + }; + }; + }; + buildConfigurationList = 53ED339C2165588D005E895D /* Build configuration list for PBXProject "AdaptType" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 53ED33982165588D005E895D; + productRefGroup = 53ED33A22165588D005E895D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 53ED33A02165588D005E895D /* AdaptType */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 53ED339F2165588D005E895D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 53ED33AF2165588E005E895D /* LaunchScreen.storyboard in Resources */, + 53ED33AC2165588E005E895D /* Assets.xcassets in Resources */, + 53ED33AA2165588D005E895D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 53ED339D2165588D005E895D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 53ED33A72165588D005E895D /* SettingsViewController.swift in Sources */, + 53ED33A52165588D005E895D /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 53ED33A82165588D005E895D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 53ED33A92165588D005E895D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 53ED33AD2165588E005E895D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 53ED33AE2165588E005E895D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 53ED33B12165588E005E895D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + 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_IMPLICIT_RETAIN_SELF = 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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 53ED33B22165588E005E895D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + 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_IMPLICIT_RETAIN_SELF = 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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 53ED33B42165588E005E895D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = LCC2J94N44; + INFOPLIST_FILE = AdaptType/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.AdaptType; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 53ED33B52165588E005E895D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = LCC2J94N44; + INFOPLIST_FILE = AdaptType/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.AdaptType; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 53ED339C2165588D005E895D /* Build configuration list for PBXProject "AdaptType" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 53ED33B12165588E005E895D /* Debug */, + 53ED33B22165588E005E895D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 53ED33B32165588E005E895D /* Build configuration list for PBXNativeTarget "AdaptType" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 53ED33B42165588E005E895D /* Debug */, + 53ED33B52165588E005E895D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 53ED33992165588D005E895D /* Project object */; +} diff --git a/AdaptType/AdaptType.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/AdaptType/AdaptType.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..330b13d --- /dev/null +++ b/AdaptType/AdaptType.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/AdaptType/AdaptType.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/AdaptType/AdaptType.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/AdaptType/AdaptType.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/AdaptType/AdaptType/AppDelegate.swift b/AdaptType/AdaptType/AppDelegate.swift new file mode 100644 index 0000000..85205c0 --- /dev/null +++ b/AdaptType/AdaptType/AppDelegate.swift @@ -0,0 +1,34 @@ +// Copyright © 2018 Keith Harrison. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + var window: UIWindow? +} diff --git a/ScaledFont/ScaledFont/Assets.xcassets/AppIcon.appiconset/Contents.json b/AdaptType/AdaptType/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from ScaledFont/ScaledFont/Assets.xcassets/AppIcon.appiconset/Contents.json rename to AdaptType/AdaptType/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/DynamicText/DynamicText/Images.xcassets/Contents.json b/AdaptType/AdaptType/Assets.xcassets/Contents.json similarity index 100% rename from DynamicText/DynamicText/Images.xcassets/Contents.json rename to AdaptType/AdaptType/Assets.xcassets/Contents.json diff --git a/ScaledFont/ScaledFont/Base.lproj/LaunchScreen.storyboard b/AdaptType/AdaptType/Base.lproj/LaunchScreen.storyboard similarity index 84% rename from ScaledFont/ScaledFont/Base.lproj/LaunchScreen.storyboard rename to AdaptType/AdaptType/Base.lproj/LaunchScreen.storyboard index f83f6fd..bfa3612 100644 --- a/ScaledFont/ScaledFont/Base.lproj/LaunchScreen.storyboard +++ b/AdaptType/AdaptType/Base.lproj/LaunchScreen.storyboard @@ -1,5 +1,5 @@ - + diff --git a/AdaptType/AdaptType/Base.lproj/Main.storyboard b/AdaptType/AdaptType/Base.lproj/Main.storyboard new file mode 100644 index 0000000..8303d01 --- /dev/null +++ b/AdaptType/AdaptType/Base.lproj/Main.storyboard @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ScaledFont/ScaledFont/Info.plist b/AdaptType/AdaptType/Info.plist similarity index 86% rename from ScaledFont/ScaledFont/Info.plist rename to AdaptType/AdaptType/Info.plist index 24cd042..16be3b6 100644 --- a/ScaledFont/ScaledFont/Info.plist +++ b/AdaptType/AdaptType/Info.plist @@ -24,12 +24,6 @@ LaunchScreen UIMainStoryboardFile Main - UIAppFonts - - NotoSerif-Regular.ttf - NotoSerif-Bold.ttf - NotoSerif-Italic.ttf - UIRequiredDeviceCapabilities armv7 @@ -39,7 +33,6 @@ UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight - UIInterfaceOrientationPortraitUpsideDown UISupportedInterfaceOrientations~ipad diff --git a/AdaptType/AdaptType/SettingsViewController.swift b/AdaptType/AdaptType/SettingsViewController.swift new file mode 100644 index 0000000..c2a4310 --- /dev/null +++ b/AdaptType/AdaptType/SettingsViewController.swift @@ -0,0 +1,76 @@ +// Copyright © 2018 Keith Harrison. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import UIKit + +final class SettingsViewController: UIViewController { + @IBOutlet var stackView: UIStackView! + + let backgroundView: UIView = { + let view = UIView() + view.backgroundColor = .white + view.translatesAutoresizingMaskIntoConstraints = false + return view + }() + + override func viewDidLoad() { + super.viewDidLoad() + setupView() + configureView(for: traitCollection) + } + + private func setupView() { + stackView.insertSubview(backgroundView, at: 0) + NSLayoutConstraint.activate([ + backgroundView.leadingAnchor.constraint(equalTo: stackView.leadingAnchor), + backgroundView.topAnchor.constraint(equalTo: stackView.topAnchor), + backgroundView.trailingAnchor.constraint(equalTo: stackView.trailingAnchor), + backgroundView.bottomAnchor.constraint(equalTo: stackView.bottomAnchor) + ]) + } +} + +extension SettingsViewController { + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + super.traitCollectionDidChange(previousTraitCollection) + if previousTraitCollection?.preferredContentSizeCategory != traitCollection.preferredContentSizeCategory { + configureView(for: traitCollection) + } + } + + private func configureView(for traitCollection: UITraitCollection) { + let contentSize = traitCollection.preferredContentSizeCategory + if contentSize.isAccessibilityCategory { + stackView.axis = .vertical + stackView.alignment = .leading + } else { + stackView.axis = .horizontal + stackView.alignment = .center + } + } +} diff --git a/AdaptType/README.md b/AdaptType/README.md new file mode 100644 index 0000000..f9c4b69 --- /dev/null +++ b/AdaptType/README.md @@ -0,0 +1,5 @@ +# Making Space For Dynamic Type + +A case study that looks at how to implement the Larger Text screen from the Apple Settings App. See the following post for details: + ++ [Making Space For Dynamic Type](https://useyourloaf.com/blog/making-space-for-dynamic-type/) diff --git a/AdaptivePopover/AdaptivePopover.xcodeproj/project.pbxproj b/AdaptivePopover/AdaptivePopover.xcodeproj/project.pbxproj index e6de0ae..e582a0a 100644 --- a/AdaptivePopover/AdaptivePopover.xcodeproj/project.pbxproj +++ b/AdaptivePopover/AdaptivePopover.xcodeproj/project.pbxproj @@ -18,17 +18,17 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - 53A8BF831C0CE6F3003C9B46 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; 53BC63AA1C0A57E4009BFDDF /* AdaptivePopover.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AdaptivePopover.app; sourceTree = BUILT_PRODUCTS_DIR; }; 53BC63AD1C0A57E4009BFDDF /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 53BC63B21C0A57E4009BFDDF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 53BC63B41C0A57E4009BFDDF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 53BC63B71C0A57E4009BFDDF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 53BC63B91C0A57E4009BFDDF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 53BC63BF1C0A591A009BFDDF /* RootViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RootViewController.swift; sourceTree = ""; }; 53BC63C11C0A596C009BFDDF /* SimpleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SimpleViewController.swift; sourceTree = ""; }; 53BC63C31C0A5F59009BFDDF /* SimpleTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SimpleTableViewController.swift; sourceTree = ""; }; 53BC63C51C0A5F72009BFDDF /* DetailViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DetailViewController.swift; sourceTree = ""; }; + 53FFA91A23C768C000EAFE01 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + 53FFA91D23C76E7D00EAFE01 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 53FFA91E23C76E7D00EAFE01 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -45,7 +45,7 @@ 53BC63A11C0A57E4009BFDDF = { isa = PBXGroup; children = ( - 53A8BF831C0CE6F3003C9B46 /* README */, + 53FFA91A23C768C000EAFE01 /* README.md */, 53BC63AC1C0A57E4009BFDDF /* AdaptivePopover */, 53BC63AB1C0A57E4009BFDDF /* Products */, ); @@ -102,17 +102,18 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0710; - LastUpgradeCheck = 0710; + LastUpgradeCheck = 1120; ORGANIZATIONNAME = "Keith Harrison"; TargetAttributes = { 53BC63A91C0A57E4009BFDDF = { CreatedOnToolsVersion = 7.1.1; + DevelopmentTeam = LCC2J94N44; }; }; }; buildConfigurationList = 53BC63A51C0A57E4009BFDDF /* Build configuration list for PBXProject "AdaptivePopover" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, @@ -160,7 +161,7 @@ 53BC63B11C0A57E4009BFDDF /* Main.storyboard */ = { isa = PBXVariantGroup; children = ( - 53BC63B21C0A57E4009BFDDF /* Base */, + 53FFA91D23C76E7D00EAFE01 /* Base */, ); name = Main.storyboard; sourceTree = ""; @@ -168,7 +169,7 @@ 53BC63B61C0A57E4009BFDDF /* LaunchScreen.storyboard */ = { isa = PBXVariantGroup; children = ( - 53BC63B71C0A57E4009BFDDF /* Base */, + 53FFA91E23C76E7D00EAFE01 /* Base */, ); name = LaunchScreen.storyboard; sourceTree = ""; @@ -180,17 +181,28 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 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_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_IMPLICIT_RETAIN_SELF = 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -217,6 +229,7 @@ ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -225,17 +238,28 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 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_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_IMPLICIT_RETAIN_SELF = 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -254,6 +278,8 @@ IPHONEOS_DEPLOYMENT_TARGET = 9.1; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -263,8 +289,11 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CURRENT_PROJECT_VERSION = 2; + DEVELOPMENT_TEAM = LCC2J94N44; INFOPLIST_FILE = AdaptivePopover/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MARKETING_VERSION = 2.0; PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.AdaptivePopover; PRODUCT_NAME = "$(TARGET_NAME)"; }; @@ -274,8 +303,11 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CURRENT_PROJECT_VERSION = 2; + DEVELOPMENT_TEAM = LCC2J94N44; INFOPLIST_FILE = AdaptivePopover/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MARKETING_VERSION = 2.0; PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.AdaptivePopover; PRODUCT_NAME = "$(TARGET_NAME)"; }; diff --git a/AdaptivePopover/AdaptivePopover.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/AdaptivePopover/AdaptivePopover.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..997f1a0 --- /dev/null +++ b/AdaptivePopover/AdaptivePopover.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/AdaptivePopover/AdaptivePopover.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/AdaptivePopover/AdaptivePopover.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/AdaptivePopover/AdaptivePopover.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/AdaptivePopover/AdaptivePopover/Base.lproj/LaunchScreen.storyboard b/AdaptivePopover/AdaptivePopover/Base.lproj/LaunchScreen.storyboard index f9b6409..bfec1a2 100644 --- a/AdaptivePopover/AdaptivePopover/Base.lproj/LaunchScreen.storyboard +++ b/AdaptivePopover/AdaptivePopover/Base.lproj/LaunchScreen.storyboard @@ -1,45 +1,41 @@ - - + + + - + + + - - - - - + - + - - - + - + + @@ -53,9 +49,8 @@ - + - diff --git a/AdaptivePopover/AdaptivePopover/Base.lproj/Main.storyboard b/AdaptivePopover/AdaptivePopover/Base.lproj/Main.storyboard index b02fbee..e1d5a06 100644 --- a/AdaptivePopover/AdaptivePopover/Base.lproj/Main.storyboard +++ b/AdaptivePopover/AdaptivePopover/Base.lproj/Main.storyboard @@ -1,28 +1,27 @@ - - + + + - + + + - - - - - + - + - - - + - + + @@ -65,64 +63,55 @@ - - - - - + - - + - + + - + - + - - + - + - + - - @@ -146,28 +135,23 @@ - - - - - + - - + - + + @@ -183,9 +167,8 @@ - + - @@ -194,7 +177,7 @@ - + @@ -202,9 +185,8 @@ - + - diff --git a/AdaptivePopover/AdaptivePopover/Info.plist b/AdaptivePopover/AdaptivePopover/Info.plist index 40c6215..26e2b70 100644 --- a/AdaptivePopover/AdaptivePopover/Info.plist +++ b/AdaptivePopover/AdaptivePopover/Info.plist @@ -15,11 +15,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.0 + $(MARKETING_VERSION) CFBundleSignature ???? CFBundleVersion - 1 + $(CURRENT_PROJECT_VERSION) LSRequiresIPhoneOS UILaunchStoryboardName diff --git a/AdaptivePopover/AdaptivePopover/RootViewController.swift b/AdaptivePopover/AdaptivePopover/RootViewController.swift index e73020f..3afb47c 100644 --- a/AdaptivePopover/AdaptivePopover/RootViewController.swift +++ b/AdaptivePopover/AdaptivePopover/RootViewController.swift @@ -33,75 +33,72 @@ import UIKit -class RootViewController: UIViewController { +final class RootViewController: UIViewController { + @IBOutlet var simpleButton: UIButton! + @IBOutlet var embeddedButton: UIButton! - @IBOutlet weak var simpleButton: UIButton! - @IBOutlet weak var embeddedButton: UIButton! - - override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { switch segue.identifier { case "SimpleSegue"?: - let simplePPC = segue.destinationViewController.popoverPresentationController + let simplePPC = segue.destination.popoverPresentationController simplePPC?.delegate = self simplePPC?.sourceView = simpleButton simplePPC?.sourceRect = simpleButton.bounds case "EmbeddedSegue"?: - let embeddedPPC = segue.destinationViewController.popoverPresentationController + let embeddedPPC = segue.destination.popoverPresentationController embeddedPPC?.delegate = self embeddedPPC?.sourceView = embeddedButton embeddedPPC?.sourceRect = embeddedButton.bounds default: - fatalError("Unknown segue: \(segue.identifier)") + fatalError("Unknown segue: \(segue.identifier ?? "Unknown")") } } } - // MARK: UIPopoverPresentationControllerDelegate + extension RootViewController: UIPopoverPresentationControllerDelegate { - // In modal presentation we need to add a button to our popover // to allow it to be dismissed. Handle the situation where // our popover may be embedded in a navigation controller - - func presentationController(controller: UIPresentationController, viewControllerForAdaptivePresentationStyle style: UIModalPresentationStyle) -> UIViewController? { - guard style != .None else { + + func presentationController(_ controller: UIPresentationController, viewControllerForAdaptivePresentationStyle style: UIModalPresentationStyle) -> UIViewController? { + if style == .none { return controller.presentedViewController } - - if let navController = controller.presentedViewController as? UINavigationController { - addDismissButton(navController) - return navController - } else { - let navController = UINavigationController.init(rootViewController: controller.presentedViewController) - addDismissButton(navController) - return navController - } + + let navigationController: UINavigationController = { + guard let navigationController = controller.presentedViewController as? UINavigationController else { + return UINavigationController(rootViewController: controller.presentedViewController) + } + return navigationController + }() + + addDismissButton(navigationController) + return navigationController } - + // Check for when we present in a non modal style and remove the // the dismiss button from the navigation bar. - - func presentationController(presentationController: UIPresentationController, willPresentWithAdaptiveStyle style: UIModalPresentationStyle, transitionCoordinator: UIViewControllerTransitionCoordinator?) { - if style == .None { - if let navController = presentationController.presentedViewController as? UINavigationController { - removeDismissButton(navController) - } + + func presentationController(_ presentationController: UIPresentationController, willPresentWithAdaptiveStyle style: UIModalPresentationStyle, transitionCoordinator: UIViewControllerTransitionCoordinator?) { + if style == .none, + let navController = presentationController.presentedViewController as? UINavigationController { + removeDismissButton(navController) } } - - func didDismissPresentedView() { - presentedViewController?.dismissViewControllerAnimated(true, completion: nil) + + @objc private func didDismissPresentedView() { + presentedViewController?.dismiss(animated: true, completion: nil) } - - private func addDismissButton(navigationController: UINavigationController) { + + private func addDismissButton(_ navigationController: UINavigationController) { let rootViewController = navigationController.viewControllers[0] - rootViewController.navigationItem.leftBarButtonItem = UIBarButtonItem.init(barButtonSystemItem: .Done, - target: self, action: "didDismissPresentedView") + rootViewController.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(didDismissPresentedView)) } - - private func removeDismissButton(navigationController: UINavigationController) { + + private func removeDismissButton(_ navigationController: UINavigationController) { let rootViewController = navigationController.viewControllers[0] - rootViewController.navigationItem.leftBarButtonItem = nil; + rootViewController.navigationItem.leftBarButtonItem = nil } } diff --git a/AdaptivePopover/AdaptivePopover/SimpleTableViewController.swift b/AdaptivePopover/AdaptivePopover/SimpleTableViewController.swift index 68f8ac9..a41c123 100644 --- a/AdaptivePopover/AdaptivePopover/SimpleTableViewController.swift +++ b/AdaptivePopover/AdaptivePopover/SimpleTableViewController.swift @@ -33,32 +33,30 @@ import UIKit -class SimpleTableViewController: UIViewController { - +final class SimpleTableViewController: UIViewController { @IBOutlet var tableView: UITableView! - - override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { - if segue.identifier == "ShowDetailSegue" { - if let indexPath = tableView.indexPathForCell(sender as! UITableViewCell) { - if let detailViewController = segue.destinationViewController as? DetailViewController { - detailViewController.detailText = "Item \(indexPath.row)" - } - } + + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + if segue.identifier == "ShowDetailSegue", + let sender = sender as? UITableViewCell, + let indexPath = tableView.indexPath(for: sender), + let detailViewController = segue.destination as? DetailViewController { + detailViewController.detailText = "Item \(indexPath.row)" } } } extension SimpleTableViewController: UITableViewDataSource { - func numberOfSectionsInTableView(tableView: UITableView) -> Int { + func numberOfSections(in tableView: UITableView) -> Int { return 1 } - - func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 10 } - - func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { - let cell = tableView.dequeueReusableCellWithIdentifier("SimpleCell", forIndexPath: indexPath) + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: "SimpleCell", for: indexPath) cell.textLabel?.text = "Item \(indexPath.row)" return cell } diff --git a/AdaptivePopover/README b/AdaptivePopover/README deleted file mode 100644 index c60fb7d..0000000 --- a/AdaptivePopover/README +++ /dev/null @@ -1,11 +0,0 @@ -======================================================================= -AdaptivePopover - Adapting popovers to size classes - -Version 1.0 30 Nov 2015 Initial version. -======================================================================= - -Example of how to use the UIPopoverPresentationController delegate -protocol to adapt a popover to compact size classes. See the following -post for further details: - -http://useyourloaf.com/blog/making-popovers-adapt-to-size-classes.html diff --git a/AdaptivePopover/README.md b/AdaptivePopover/README.md new file mode 100644 index 0000000..2f2a4be --- /dev/null +++ b/AdaptivePopover/README.md @@ -0,0 +1,10 @@ +# AdaptivePopover - Adapting popovers to size classes + ++ Version 2.0 09 Jan 2020 Updated for Xcode 11, Swift 5 and iOS 13 ++ Version 1.0 30 Nov 2015 Initial version. + +Example of how to use the `UIPopoverPresentationController` delegate +protocol to adapt a popover to compact size classes. See the following +post for further details: + ++ [Making Popovers Adapt to Size Classes](https://useyourloaf.com/blog/making-popovers-adapt-to-size-classes/) diff --git a/AirPrinter/AirPrinter/WebViewController.xib b/AirPrinter/AirPrinter/WebViewController.xib deleted file mode 100644 index b28d757..0000000 --- a/AirPrinter/AirPrinter/WebViewController.xib +++ /dev/null @@ -1,177 +0,0 @@ - - - - 1056 - 11A511 - 1617 - 1138 - 566.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 534 - - - YES - IBProxyObject - IBUIWebView - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - - - YES - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 292 - {240, 128} - - - _NS:667 - - 1 - MSAxIDEAA - - IBCocoaTouchFramework - YES - - - - - YES - - - webView - - - - 5 - - - - delegate - - - - 6 - - - - view - - - - 7 - - - - - YES - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - Web View - - - - - YES - - YES - -1.CustomClassName - -1.IBPluginDependency - -2.CustomClassName - -2.IBPluginDependency - 4.IBPluginDependency - - - YES - WebViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - - - - YES - - - - - 7 - - - - YES - - WebViewController - UIViewController - - webView - UIWebView - - - webView - - webView - UIWebView - - - - IBProjectSource - ./Classes/WebViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - 3 - 534 - - diff --git a/AirPrinter/AirPrinter/en.lproj/MainWindow.xib b/AirPrinter/AirPrinter/en.lproj/MainWindow.xib deleted file mode 100644 index ba438d9..0000000 --- a/AirPrinter/AirPrinter/en.lproj/MainWindow.xib +++ /dev/null @@ -1,331 +0,0 @@ - - - - 1024 - 11A511 - 1617 - 1138 - 566.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 534 - - - YES - IBProxyObject - IBUINavigationController - IBUIViewController - IBUICustomObject - IBUIBarButtonItem - IBUIWindow - IBUINavigationBar - IBUINavigationItem - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - - - YES - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - IBCocoaTouchFramework - - - - 1316 - - {320, 480} - - - - 1 - MSAxIDEAA - - NO - NO - - IBCocoaTouchFramework - YES - - - - - 1 - 1 - - IBCocoaTouchFramework - NO - - - 256 - {0, 0} - NO - YES - YES - IBCocoaTouchFramework - - - YES - - - - AirPrinter - - Home - IBCocoaTouchFramework - 1 - - IBCocoaTouchFramework - - - RootViewController - - - 1 - 1 - - IBCocoaTouchFramework - NO - - - - - - - YES - - - delegate - - - - 4 - - - - window - - - - 5 - - - - navigationController - - - - 15 - - - - - YES - - 0 - - - - - - 2 - - - YES - - - - - -1 - - - File's Owner - - - 3 - - - - - -2 - - - - - 9 - - - YES - - - - - - - 11 - - - - - 13 - - - YES - - - - - - 14 - - - YES - - - - - - 17 - - - - - - - YES - - YES - -1.CustomClassName - -1.IBPluginDependency - -2.CustomClassName - -2.IBPluginDependency - 11.IBPluginDependency - 13.CustomClassName - 13.IBPluginDependency - 14.IBPluginDependency - 17.IBPluginDependency - 2.IBAttributePlaceholdersKey - 2.IBPluginDependency - 3.CustomClassName - 3.IBPluginDependency - 9.IBPluginDependency - - - YES - UIApplication - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - RootViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - YES - - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - AirPrinterAppDelegate - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - - - - YES - - - - - 17 - - - - YES - - AirPrinterAppDelegate - NSObject - - YES - - YES - navigationController - window - - - YES - UINavigationController - UIWindow - - - - YES - - YES - navigationController - window - - - YES - - navigationController - UINavigationController - - - window - UIWindow - - - - - IBProjectSource - ./Classes/AirPrinterAppDelegate.h - - - - RootViewController - UIViewController - - IBProjectSource - ./Classes/RootViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - 3 - 534 - - diff --git a/AirPrinter/AirPrinter/en.lproj/RootViewController.xib b/AirPrinter/AirPrinter/en.lproj/RootViewController.xib deleted file mode 100644 index 6768cbf..0000000 --- a/AirPrinter/AirPrinter/en.lproj/RootViewController.xib +++ /dev/null @@ -1,170 +0,0 @@ - - - - 784 - 11A511 - 1617 - 1138 - 566.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 534 - - - IBProxyObject - IBUIView - IBUITextField - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 292 - - - - 290 - {{20, 71}, {280, 31}} - - - - _NS:294 - NO - YES - IBCocoaTouchFramework - 0 - http://apple.com - 3 - Enter a web site URL - - 3 - MAA - - 2 - - - YES - 17 - - 1 - 3 - 1 - YES - IBCocoaTouchFramework - - 1 - - - {320, 460} - - - - _NS:180 - - 1 - MC41IDAgMC41AA - - IBCocoaTouchFramework - - - - - - - view - - - - 10 - - - - delegate - - - - 11 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 6 - - - - - - - - 8 - - - - - - - RootViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 11 - - - - - RootViewController - UIViewController - - IBProjectSource - ./Classes/RootViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - 534 - - diff --git a/AirPrinter/AirPrinter/iPad/en.lproj/MainWindow-iPad.xib b/AirPrinter/AirPrinter/iPad/en.lproj/MainWindow-iPad.xib deleted file mode 100644 index c56e8f8..0000000 --- a/AirPrinter/AirPrinter/iPad/en.lproj/MainWindow-iPad.xib +++ /dev/null @@ -1,349 +0,0 @@ - - - - 1056 - 11A511 - 1617 - 1138 - 566.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 534 - - - YES - IBProxyObject - IBUINavigationController - IBUIViewController - IBUICustomObject - IBUIBarButtonItem - IBUIWindow - IBUINavigationBar - IBUINavigationItem - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - - - YES - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - IBIPadFramework - - - - 1316 - - {768, 1024} - - - - - 1 - MSAxIDEAA - - NO - NO - - 2 - - IBIPadFramework - YES - - - - - 1 - 1 - - IBIPadFramework - NO - - - 256 - {0, 0} - NO - YES - YES - IBIPadFramework - - - YES - - - - AirPrinter - - Home - IBIPadFramework - 1 - - IBIPadFramework - - - RootViewController - - - 1 - 1 - - IBIPadFramework - NO - - - - - - - YES - - - delegate - - - - 4 - - - - window - - - - 5 - - - - navigationController - - - - 15 - - - - - YES - - 0 - - - - - - 2 - - - YES - - - - - -1 - - - File's Owner - - - 3 - - - - - -2 - - - - - 9 - - - YES - - - - - - - 11 - - - - - 13 - - - YES - - - - - - 14 - - - YES - - - - - - 17 - - - - - - - YES - - YES - -1.CustomClassName - -1.IBPluginDependency - -2.CustomClassName - -2.IBPluginDependency - 11.IBPluginDependency - 13.CustomClassName - 13.IBLastUsedUIStatusBarStylesToTargetRuntimesMap - 13.IBPluginDependency - 14.IBPluginDependency - 17.IBPluginDependency - 2.IBAttributePlaceholdersKey - 2.IBLastUsedUIStatusBarStylesToTargetRuntimesMap - 2.IBPluginDependency - 3.CustomClassName - 3.IBPluginDependency - 9.IBLastUsedUIStatusBarStylesToTargetRuntimesMap - 9.IBPluginDependency - - - YES - UIApplication - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - RootViewController - - IBCocoaTouchFramework - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - YES - - - - - IBCocoaTouchFramework - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - AirPrinterAppDelegate - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - IBCocoaTouchFramework - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - - - - YES - - - - - 17 - - - - YES - - AirPrinterAppDelegate - NSObject - - YES - - YES - navigationController - window - - - YES - UINavigationController - UIWindow - - - - YES - - YES - navigationController - window - - - YES - - navigationController - UINavigationController - - - window - UIWindow - - - - - IBProjectSource - ./Classes/AirPrinterAppDelegate.h - - - - RootViewController - UIViewController - - IBProjectSource - ./Classes/RootViewController.h - - - - - 0 - IBIPadFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - 3 - 534 - - diff --git a/AlertController/AlertController.xcodeproj/project.pbxproj b/AlertController/AlertController.xcodeproj/project.pbxproj index be08d10..5ac5e6a 100644 --- a/AlertController/AlertController.xcodeproj/project.pbxproj +++ b/AlertController/AlertController.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ @@ -13,6 +13,7 @@ 5307C7DE19B6245B00CFD37F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5307C7DC19B6245B00CFD37F /* Main.storyboard */; }; 5307C7E019B6245B00CFD37F /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5307C7DF19B6245B00CFD37F /* Images.xcassets */; }; 53AF7FFA1AECFD9C00683F34 /* README in Resources */ = {isa = PBXBuildFile; fileRef = 53AF7FF91AECFD9C00683F34 /* README */; }; + 53B2CD6023C8E61A007FF91F /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 53B2CD6223C8E61A007FF91F /* Launch Screen.storyboard */; }; 53D5575019B66F5D005EAFDF /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 53D5574E19B66F5D005EAFDF /* Localizable.strings */; }; /* End PBXBuildFile section */ @@ -27,6 +28,7 @@ 5307C7DD19B6245B00CFD37F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 5307C7DF19B6245B00CFD37F /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 53AF7FF91AECFD9C00683F34 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; + 53B2CD6123C8E61A007FF91F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = "Base.lproj/Launch Screen.storyboard"; sourceTree = ""; }; 53D5574F19B66F5D005EAFDF /* en */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; /* End PBXFileReference section */ @@ -66,6 +68,7 @@ 5307C7D919B6245B00CFD37F /* ViewController.h */, 5307C7DA19B6245B00CFD37F /* ViewController.m */, 5307C7DC19B6245B00CFD37F /* Main.storyboard */, + 53B2CD6223C8E61A007FF91F /* Launch Screen.storyboard */, 5307C7DF19B6245B00CFD37F /* Images.xcassets */, 5307C7D219B6245B00CFD37F /* Supporting Files */, ); @@ -108,7 +111,7 @@ 5307C7C719B6245B00CFD37F /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0600; + LastUpgradeCheck = 1120; ORGANIZATIONNAME = "Keith Harrison"; TargetAttributes = { 5307C7CE19B6245B00CFD37F = { @@ -117,8 +120,8 @@ }; }; buildConfigurationList = 5307C7CA19B6245B00CFD37F /* Build configuration list for PBXProject "AlertController" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + compatibilityVersion = "Xcode 11.0"; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, @@ -142,6 +145,7 @@ 53AF7FFA1AECFD9C00683F34 /* README in Resources */, 5307C7DE19B6245B00CFD37F /* Main.storyboard in Resources */, 53D5575019B66F5D005EAFDF /* Localizable.strings in Resources */, + 53B2CD6023C8E61A007FF91F /* Launch Screen.storyboard in Resources */, 5307C7E019B6245B00CFD37F /* Images.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -170,6 +174,14 @@ name = Main.storyboard; sourceTree = ""; }; + 53B2CD6223C8E61A007FF91F /* Launch Screen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 53B2CD6123C8E61A007FF91F /* Base */, + ); + name = "Launch Screen.storyboard"; + sourceTree = ""; + }; 53D5574E19B66F5D005EAFDF /* Localizable.strings */ = { isa = PBXVariantGroup; children = ( @@ -185,24 +197,37 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 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_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_IMPLICIT_RETAIN_SELF = 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", @@ -227,17 +252,28 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 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_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_IMPLICIT_RETAIN_SELF = 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -245,6 +281,7 @@ ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; @@ -263,9 +300,13 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + DEVELOPMENT_TEAM = LCC2J94N44; INFOPLIST_FILE = AlertController/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -274,9 +315,13 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + DEVELOPMENT_TEAM = LCC2J94N44; INFOPLIST_FILE = AlertController/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; diff --git a/AlertController/AlertController.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/AlertController/AlertController.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..00f2aca --- /dev/null +++ b/AlertController/AlertController.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/AlertController/AlertController.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/AlertController/AlertController.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/AlertController/AlertController.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/AlertController/AlertController/Base.lproj/Launch Screen.storyboard b/AlertController/AlertController/Base.lproj/Launch Screen.storyboard new file mode 100644 index 0000000..02419c6 --- /dev/null +++ b/AlertController/AlertController/Base.lproj/Launch Screen.storyboard @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AlertController/AlertController/Base.lproj/Main.storyboard b/AlertController/AlertController/Base.lproj/Main.storyboard index c45897b..13541af 100644 --- a/AlertController/AlertController/Base.lproj/Main.storyboard +++ b/AlertController/AlertController/Base.lproj/Main.storyboard @@ -1,7 +1,10 @@ - - + + + - + + + @@ -13,59 +16,59 @@ - + - + diff --git a/AlertController/AlertController/Images.xcassets/AppIcon.appiconset/Contents.json b/AlertController/AlertController/Images.xcassets/AppIcon.appiconset/Contents.json index 91bf9c1..d8db8d6 100644 --- a/AlertController/AlertController/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/AlertController/AlertController/Images.xcassets/AppIcon.appiconset/Contents.json @@ -1,18 +1,53 @@ { "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, { "idiom" : "iphone", "size" : "29x29", "scale" : "2x" }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, { "idiom" : "iphone", "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", "scale" : "2x" }, { "idiom" : "iphone", "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", "scale" : "2x" }, { @@ -44,6 +79,16 @@ "idiom" : "ipad", "size" : "76x76", "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" } ], "info" : { diff --git a/RemindMe/RemindMe/Images.xcassets/Contents.json b/AlertController/AlertController/Images.xcassets/Contents.json similarity index 100% rename from RemindMe/RemindMe/Images.xcassets/Contents.json rename to AlertController/AlertController/Images.xcassets/Contents.json diff --git a/AlertController/AlertController/Images.xcassets/LaunchImage.launchimage/Contents.json b/AlertController/AlertController/Images.xcassets/LaunchImage.launchimage/Contents.json deleted file mode 100644 index 6f870a4..0000000 --- a/AlertController/AlertController/Images.xcassets/LaunchImage.launchimage/Contents.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "images" : [ - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "subtype" : "retina4", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "1x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "2x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/AlertController/AlertController/Info.plist b/AlertController/AlertController/Info.plist index 984f066..3af6cd7 100644 --- a/AlertController/AlertController/Info.plist +++ b/AlertController/AlertController/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - com.useyourloaf.$(PRODUCT_NAME:rfc1034identifier) + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName @@ -22,6 +22,8 @@ 1 LSRequiresIPhoneOS + UILaunchStoryboardName + Launch Screen UIMainStoryboardFile Main UIRequiredDeviceCapabilities diff --git a/AlertController/README b/AlertController/README index 72a408d..3b9896a 100644 --- a/AlertController/README +++ b/AlertController/README @@ -10,4 +10,4 @@ action sheet views. The UIAlertController class was introduced in iOS 8 as a replacement for UIAlertView and UIActionSheet. Full details in the following post: -http://useyourloaf.com/blog/2014/09/05/uialertcontroller-changes-in-ios-8.html +https://useyourloaf.com/blog/uialertcontroller-changes-in-ios-8/ diff --git a/AlertView/AlertView/en.lproj/UYLViewController.xib b/AlertView/AlertView/en.lproj/UYLViewController.xib deleted file mode 100644 index 7de4aa1..0000000 --- a/AlertView/AlertView/en.lproj/UYLViewController.xib +++ /dev/null @@ -1,326 +0,0 @@ - - - - 1280 - 11C74 - 1938 - 1138.23 - 567.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 933 - - - IBUIButton - IBUIView - IBUILabel - IBProxyObject - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 292 - {{20, 118}, {280, 37}} - - - _NS:225 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Default Style - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 292 - {{20, 190}, {280, 37}} - - - _NS:225 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Secure Text Input - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - 292 - {{20, 262}, {280, 37}} - - - _NS:225 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Plain Text Input - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - 292 - {{20, 336}, {280, 37}} - - - _NS:225 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Login and Password - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - 292 - {{20, 20}, {280, 46}} - - - _NS:328 - NO - YES - 7 - NO - IBCocoaTouchFramework - UIAlertViewStyle - - 1 - MSAxIDAAA - - - 1 - 10 - 1 - - 1 - 20 - - - Helvetica - 20 - 16 - - - - {{0, 20}, {320, 460}} - - - - - 1 - MC41IDAgMC41AA - - NO - - IBCocoaTouchFramework - - - - - - - view - - - - 7 - - - - showDefaultAlertView: - - - 7 - - 13 - - - - showSecureTextAlertView: - - - 7 - - 14 - - - - showPlainTextAlertView: - - - 7 - - 15 - - - - showLoginPassAlertView: - - - 7 - - 16 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 6 - - - - - - - - - - - - 8 - - - - - 9 - - - - - 10 - - - - - 11 - - - - - 12 - - - - - - - UYLViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 16 - - - - - UYLViewController - UIViewController - - IBProjectSource - ./Classes/UYLViewController.h - - - - - 0 - IBCocoaTouchFramework - YES - 3 - 933 - - diff --git a/AllVisible/AllVisible.xcodeproj/project.pbxproj b/AllVisible/AllVisible.xcodeproj/project.pbxproj index 7e2b795..68c02d2 100644 --- a/AllVisible/AllVisible.xcodeproj/project.pbxproj +++ b/AllVisible/AllVisible.xcodeproj/project.pbxproj @@ -167,12 +167,13 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0800; - LastUpgradeCheck = 0830; + LastUpgradeCheck = 1340; ORGANIZATIONNAME = "Keith Harrison"; TargetAttributes = { 53AA2EB11DA2A957008EBF84 = { CreatedOnToolsVersion = 8.0; DevelopmentTeam = LCC2J94N44; + LastSwiftMigration = 1120; ProvisioningStyle = Automatic; }; 53AA2ECC1DA2AE09008EBF84 = { @@ -184,7 +185,7 @@ }; buildConfigurationList = 53AA2EAD1DA2A957008EBF84 /* Build configuration list for PBXProject "AllVisible" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, @@ -288,20 +289,30 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 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_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_SUSPICIOUS_MOVES = YES; CLANG_WARN_UNREACHABLE_CODE = YES; @@ -325,7 +336,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -339,20 +350,30 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 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_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_SUSPICIOUS_MOVES = YES; CLANG_WARN_UNREACHABLE_CODE = YES; @@ -370,7 +391,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; @@ -388,7 +409,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.AllVisible; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -401,7 +423,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.AllVisible; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 5.0; }; name = Release; }; diff --git a/AllVisible/AllVisible.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/AllVisible/AllVisible.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..78219e1 --- /dev/null +++ b/AllVisible/AllVisible.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/AllVisible/AllVisible.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/AllVisible/AllVisible.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/AllVisible/AllVisible.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/AllVisible/AllVisible/AppDelegate.swift b/AllVisible/AllVisible/AppDelegate.swift index 36e6e17..c56dd48 100644 --- a/AllVisible/AllVisible/AppDelegate.swift +++ b/AllVisible/AllVisible/AppDelegate.swift @@ -3,7 +3,7 @@ // AllVisible // // Created by Keith Harrison http://useyourloaf.com -// Copyright (c) 2016 Keith Harrison. All rights reserved. +// Copyright (c) 2016-2018 Keith Harrison. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: @@ -35,23 +35,35 @@ import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { - var window: UIWindow? - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + guard let splitViewController = self.window?.rootViewController as? UISplitViewController else { + fatalError("Missing SplitViewController") + } + + guard let masterNavController = splitViewController.viewControllers.first as? UINavigationController, + let masterViewController = masterNavController.topViewController as? MasterViewController else { + fatalError("Missing MasterViewController") + } + + guard let navigationController = splitViewController.viewControllers.last as? UINavigationController, + let detailViewController = navigationController.topViewController else { + fatalError("Missing detail view controller") + } // Configure the SplitViewController to prefer to always - // show both master and detail views and add the display - // mode button to the navigation bar of the secondary - // view controller. + // show both master and detail views. + splitViewController.preferredDisplayMode = .allVisible - if let splitViewController = self.window?.rootViewController as? UISplitViewController { - splitViewController.preferredDisplayMode = .allVisible + // Make the master view controller the delegate. + splitViewController.delegate = masterViewController + + // Add the display mode button to the navigation bar + // of the secondary view controller. + detailViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem + detailViewController.navigationItem.leftItemsSupplementBackButton = true - if let navigationController = splitViewController.viewControllers.last as? UINavigationController { - navigationController.topViewController?.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem - } - } return true } } diff --git a/AllVisible/AllVisible/Base.lproj/Main.storyboard b/AllVisible/AllVisible/Base.lproj/Main.storyboard index d3b70bb..2723212 100644 --- a/AllVisible/AllVisible/Base.lproj/Main.storyboard +++ b/AllVisible/AllVisible/Base.lproj/Main.storyboard @@ -1,8 +1,10 @@ - + + - + + @@ -11,7 +13,7 @@ - + @@ -26,27 +28,27 @@ - - - - - + - + + @@ -58,27 +60,25 @@ - - - - - + - + - + + @@ -109,7 +109,7 @@ - + @@ -122,6 +122,6 @@ - + diff --git a/AllVisible/AllVisible/DetailViewController.swift b/AllVisible/AllVisible/DetailViewController.swift index 046b0cf..2bdf1ae 100644 --- a/AllVisible/AllVisible/DetailViewController.swift +++ b/AllVisible/AllVisible/DetailViewController.swift @@ -3,7 +3,7 @@ // AllVisible // // Created by Keith Harrison http://useyourloaf.com -// Copyright (c) 2016 Keith Harrison. All rights reserved. +// Copyright (c) 2016-2018 Keith Harrison. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: @@ -33,9 +33,8 @@ import UIKit -class DetailViewController: UIViewController { - - @IBOutlet private weak var detailLabel: UILabel! +final class DetailViewController: UIViewController { + @IBOutlet private var detailLabel: UILabel! private func configureView() { if let label = detailLabel { diff --git a/AllVisible/AllVisible/MasterViewController.swift b/AllVisible/AllVisible/MasterViewController.swift index 10105d1..6d1e170 100644 --- a/AllVisible/AllVisible/MasterViewController.swift +++ b/AllVisible/AllVisible/MasterViewController.swift @@ -3,7 +3,7 @@ // AllVisible // // Created by Keith Harrison http://useyourloaf.com -// Copyright (c) 2016 Keith Harrison. All rights reserved. +// Copyright (c) 2016-2018 Keith Harrison. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: @@ -33,29 +33,14 @@ import UIKit -class MasterViewController: UIViewController { - - fileprivate var collapseDetailViewController = true - - override func viewDidLoad() { - super.viewDidLoad() - splitViewController?.delegate = self - } - +final class MasterViewController: UIViewController { override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - guard let navController = segue.destination as? UINavigationController, - let viewController = navController.topViewController as? DetailViewController + let viewController = navController.topViewController as? DetailViewController else { fatalError("Expected DetailViewController") } - // Once we have something to show in the detail - // view allow the default which is to show the - // secondary in a collapsed split view - - collapseDetailViewController = false - viewController.navigationItem.leftBarButtonItem = splitViewController?.displayModeButtonItem viewController.navigationItem.leftItemsSupplementBackButton = true viewController.detailItem = Date() @@ -63,11 +48,18 @@ class MasterViewController: UIViewController { } extension MasterViewController: UISplitViewControllerDelegate { - func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool { + // Returning true prevents the default of showing + // the secondary view controller. + guard let navigationController = secondaryViewController as? UINavigationController, + let detailViewController = navigationController.topViewController as? DetailViewController else { + // Fallback to the default + return false + } - // Returning true prevents the default of showing the secondary - // view controller. - return collapseDetailViewController + // Once we have something to show in the detail + // view return false to show the secondary in a + // collapsed split view + return detailViewController.detailItem == nil } } diff --git a/AllVisible/AllVisibleObjC/AppDelegate.m b/AllVisible/AllVisibleObjC/AppDelegate.m index d69a89e..a169974 100644 --- a/AllVisible/AllVisibleObjC/AppDelegate.m +++ b/AllVisible/AllVisibleObjC/AppDelegate.m @@ -33,14 +33,21 @@ #import "AppDelegate.h" +#import "MasterViewController.h" @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController; splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModeAllVisible; + + UINavigationController *masterNavigationController = [splitViewController.viewControllers firstObject]; + MasterViewController *masterViewController = (MasterViewController *)masterNavigationController.topViewController; + splitViewController.delegate = masterViewController; + UINavigationController *navigationController = [splitViewController.viewControllers lastObject]; navigationController.topViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem; + navigationController.topViewController.navigationItem.leftItemsSupplementBackButton = YES; return YES; } diff --git a/AllVisible/AllVisibleObjC/DetailViewController.h b/AllVisible/AllVisibleObjC/DetailViewController.h index 40d451f..7d2ab80 100644 --- a/AllVisible/AllVisibleObjC/DetailViewController.h +++ b/AllVisible/AllVisibleObjC/DetailViewController.h @@ -35,5 +35,5 @@ #import @interface DetailViewController : UIViewController -@property (copy, nonatomic) NSDate *detailItem; +@property (copy, nonatomic, nullable) NSDate *detailItem; @end diff --git a/AllVisible/AllVisibleObjC/MasterViewController.h b/AllVisible/AllVisibleObjC/MasterViewController.h index b2e3a60..0ed7dc7 100644 --- a/AllVisible/AllVisibleObjC/MasterViewController.h +++ b/AllVisible/AllVisibleObjC/MasterViewController.h @@ -34,5 +34,5 @@ #import -@interface MasterViewController : UIViewController +@interface MasterViewController : UIViewController @end diff --git a/AllVisible/AllVisibleObjC/MasterViewController.m b/AllVisible/AllVisibleObjC/MasterViewController.m index 3f6d0d0..f570cf8 100644 --- a/AllVisible/AllVisibleObjC/MasterViewController.m +++ b/AllVisible/AllVisibleObjC/MasterViewController.m @@ -35,30 +35,24 @@ #import "MasterViewController.h" #import "DetailViewController.h" -@interface MasterViewController () -@property (nonatomic, assign) BOOL collapseDetailViewController; -@end - @implementation MasterViewController -- (void)viewDidLoad { - [super viewDidLoad]; - self.collapseDetailViewController = YES; - self.splitViewController.delegate = self; -} - - (BOOL)splitViewController:(UISplitViewController *)splitViewController collapseSecondaryViewController:(UIViewController *)secondaryViewController ontoPrimaryViewController:(UIViewController *)primaryViewController { - return self.collapseDetailViewController; + if ([secondaryViewController isKindOfClass:[UINavigationController class]]) { + UINavigationController *navigationController = (UINavigationController *)secondaryViewController; + if ([navigationController.topViewController isKindOfClass:[DetailViewController class]]) { + DetailViewController *detailViewController = (DetailViewController *)navigationController.topViewController; + return detailViewController.detailItem == NULL; + } + } + return NO; } - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - - self.collapseDetailViewController = NO; - if ([segue.destinationViewController isKindOfClass:[UINavigationController class]]) { - UINavigationController *navController = segue.destinationViewController; - if ([navController.topViewController isKindOfClass:[DetailViewController class]]) { - DetailViewController *viewController = (DetailViewController *)navController.topViewController; + UINavigationController *navigationController = segue.destinationViewController; + if ([navigationController.topViewController isKindOfClass:[DetailViewController class]]) { + DetailViewController *viewController = (DetailViewController *)navigationController.topViewController; viewController.navigationItem.leftBarButtonItem = self.splitViewController.displayModeButtonItem; viewController.navigationItem.leftItemsSupplementBackButton = YES; viewController.detailItem = [NSDate date]; diff --git a/AnimatedConstraints/AnimatedConstraints.xcodeproj/project.pbxproj b/AnimatedConstraints/AnimatedConstraints.xcodeproj/project.pbxproj index ff20624..a579b76 100644 --- a/AnimatedConstraints/AnimatedConstraints.xcodeproj/project.pbxproj +++ b/AnimatedConstraints/AnimatedConstraints.xcodeproj/project.pbxproj @@ -16,7 +16,7 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - 5326FC411B0A8FF5003FF69D /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + 5326FC411B0A8FF5003FF69D /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 53D8FD641B08B9E100265E63 /* AnimatedConstraints.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AnimatedConstraints.app; sourceTree = BUILT_PRODUCTS_DIR; }; 53D8FD681B08B9E100265E63 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 53D8FD691B08B9E100265E63 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; @@ -43,7 +43,7 @@ 53D8FD5B1B08B9E100265E63 = { isa = PBXGroup; children = ( - 5326FC411B0A8FF5003FF69D /* README */, + 5326FC411B0A8FF5003FF69D /* README.md */, 53D8FD661B08B9E100265E63 /* AnimatedConstraints */, 53D8FD651B08B9E100265E63 /* Products */, ); @@ -107,17 +107,18 @@ 53D8FD5C1B08B9E100265E63 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0630; + LastUpgradeCheck = 1110; ORGANIZATIONNAME = "Keith Harrison"; TargetAttributes = { 53D8FD631B08B9E100265E63 = { CreatedOnToolsVersion = 6.3.1; + DevelopmentTeam = LCC2J94N44; }; }; }; buildConfigurationList = 53D8FD5F1B08B9E100265E63 /* Build configuration list for PBXProject "AnimatedConstraints" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, @@ -175,23 +176,35 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 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_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_IMPLICIT_RETAIN_SELF = 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -207,7 +220,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.3; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -219,17 +232,28 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 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_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_IMPLICIT_RETAIN_SELF = 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -245,7 +269,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.3; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; @@ -257,8 +281,11 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CURRENT_PROJECT_VERSION = 2; + DEVELOPMENT_TEAM = LCC2J94N44; INFOPLIST_FILE = AnimatedConstraints/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -267,8 +294,11 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CURRENT_PROJECT_VERSION = 2; + DEVELOPMENT_TEAM = LCC2J94N44; INFOPLIST_FILE = AnimatedConstraints/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; diff --git a/AnimatedConstraints/AnimatedConstraints.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/AnimatedConstraints/AnimatedConstraints.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..729e605 --- /dev/null +++ b/AnimatedConstraints/AnimatedConstraints.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/AnimatedConstraints/AnimatedConstraints.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/AnimatedConstraints/AnimatedConstraints.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/AnimatedConstraints/AnimatedConstraints.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/AnimatedConstraints/AnimatedConstraints/Base.lproj/Main.storyboard b/AnimatedConstraints/AnimatedConstraints/Base.lproj/Main.storyboard index b93b4fa..ce347f7 100644 --- a/AnimatedConstraints/AnimatedConstraints/Base.lproj/Main.storyboard +++ b/AnimatedConstraints/AnimatedConstraints/Base.lproj/Main.storyboard @@ -1,8 +1,10 @@ - - + + + - - + + + @@ -14,31 +16,31 @@ - + - + - - + + - - + + - + @@ -75,7 +77,7 @@ - + diff --git a/AnimatedConstraints/AnimatedConstraints/Images.xcassets/AppIcon.appiconset/Contents.json b/AnimatedConstraints/AnimatedConstraints/Images.xcassets/AppIcon.appiconset/Contents.json index 27575b9..6fe8d1f 100644 --- a/AnimatedConstraints/AnimatedConstraints/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/AnimatedConstraints/AnimatedConstraints/Images.xcassets/AppIcon.appiconset/Contents.json @@ -1,5 +1,17 @@ { "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "icon-41.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "icon-60.png", + "scale" : "3x" + }, { "size" : "29x29", "idiom" : "iphone", @@ -36,6 +48,18 @@ "filename" : "icon-180.png", "scale" : "3x" }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "icon-20.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "icon-42.png", + "scale" : "2x" + }, { "size" : "29x29", "idiom" : "ipad", @@ -71,6 +95,18 @@ "idiom" : "ipad", "filename" : "icon-76@2x.png", "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "icon-167.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "icon-1024.png", + "scale" : "1x" } ], "info" : { diff --git a/AnimatedConstraints/AnimatedConstraints/Images.xcassets/AppIcon.appiconset/icon-1024.png b/AnimatedConstraints/AnimatedConstraints/Images.xcassets/AppIcon.appiconset/icon-1024.png new file mode 100644 index 0000000..4a1a9de Binary files /dev/null and b/AnimatedConstraints/AnimatedConstraints/Images.xcassets/AppIcon.appiconset/icon-1024.png differ diff --git a/AnimatedConstraints/AnimatedConstraints/Images.xcassets/AppIcon.appiconset/icon-167.png b/AnimatedConstraints/AnimatedConstraints/Images.xcassets/AppIcon.appiconset/icon-167.png new file mode 100644 index 0000000..0a5ec66 Binary files /dev/null and b/AnimatedConstraints/AnimatedConstraints/Images.xcassets/AppIcon.appiconset/icon-167.png differ diff --git a/AnimatedConstraints/AnimatedConstraints/Images.xcassets/AppIcon.appiconset/icon-20.png b/AnimatedConstraints/AnimatedConstraints/Images.xcassets/AppIcon.appiconset/icon-20.png new file mode 100644 index 0000000..3c16adf Binary files /dev/null and b/AnimatedConstraints/AnimatedConstraints/Images.xcassets/AppIcon.appiconset/icon-20.png differ diff --git a/DynamicText/DynamicText/Images.xcassets/AppIcon.appiconset/icon-40.png b/AnimatedConstraints/AnimatedConstraints/Images.xcassets/AppIcon.appiconset/icon-41.png similarity index 100% rename from DynamicText/DynamicText/Images.xcassets/AppIcon.appiconset/icon-40.png rename to AnimatedConstraints/AnimatedConstraints/Images.xcassets/AppIcon.appiconset/icon-41.png diff --git a/AnimatedConstraints/AnimatedConstraints/Images.xcassets/AppIcon.appiconset/icon-42.png b/AnimatedConstraints/AnimatedConstraints/Images.xcassets/AppIcon.appiconset/icon-42.png new file mode 100644 index 0000000..c663546 Binary files /dev/null and b/AnimatedConstraints/AnimatedConstraints/Images.xcassets/AppIcon.appiconset/icon-42.png differ diff --git a/DynamicText/DynamicText/Images.xcassets/AppIcon.appiconset/icon-60.png b/AnimatedConstraints/AnimatedConstraints/Images.xcassets/AppIcon.appiconset/icon-60.png similarity index 100% rename from DynamicText/DynamicText/Images.xcassets/AppIcon.appiconset/icon-60.png rename to AnimatedConstraints/AnimatedConstraints/Images.xcassets/AppIcon.appiconset/icon-60.png diff --git a/AnimatedConstraints/AnimatedConstraints/Info.plist b/AnimatedConstraints/AnimatedConstraints/Info.plist index 8d07b46..bd1ead3 100644 --- a/AnimatedConstraints/AnimatedConstraints/Info.plist +++ b/AnimatedConstraints/AnimatedConstraints/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - com.useyourloaf.$(PRODUCT_NAME:rfc1034identifier) + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName @@ -19,7 +19,7 @@ CFBundleSignature ???? CFBundleVersion - 1 + $(CURRENT_PROJECT_VERSION) LSRequiresIPhoneOS UILaunchStoryboardName diff --git a/AnimatedConstraints/AnimatedConstraints/LaunchScreen.storyboard b/AnimatedConstraints/AnimatedConstraints/LaunchScreen.storyboard index 76ed3d1..8d412a2 100644 --- a/AnimatedConstraints/AnimatedConstraints/LaunchScreen.storyboard +++ b/AnimatedConstraints/AnimatedConstraints/LaunchScreen.storyboard @@ -1,7 +1,10 @@ - - + + + - + + + @@ -13,17 +16,17 @@ - + - + @@ -41,7 +44,7 @@ - + diff --git a/AnimatedConstraints/README b/AnimatedConstraints/README deleted file mode 100644 index f23d42c..0000000 --- a/AnimatedConstraints/README +++ /dev/null @@ -1,12 +0,0 @@ -======================================================================= -AnimatedConstraints - -Version 1.1 21 May 2015 Switch to changing priorities rather than - adding/removing constraints. -Version 1.0 18 May 2015 Initial Version -======================================================================= - -An example on how to animate changes made to autolayout constraints. -For further details see the post: - -useyourloaf.com/blog/2015/05/18/animating-autolayout-constraints.html \ No newline at end of file diff --git a/AnimatedConstraints/README.md b/AnimatedConstraints/README.md new file mode 100644 index 0000000..cdbb29f --- /dev/null +++ b/AnimatedConstraints/README.md @@ -0,0 +1,16 @@ +# AnimatedConstraints + + +An example on how to animate changes made to autolayout constraints. +For further details see the post: + ++ [Animating Autolayout Constraints](https://useyourloaf.com/blog/animating-autolayout-constraints/) + +## Version History + ++ Version 1.2 - 04 Oct 2019 + Minor refresh for Xcode 11. ++ Version 1.1 - 21 May 2015 + Switch to changing priorities rather than adding/removing constraints. ++ Version 1.0 - 18 May 2015 + Initial Version diff --git a/AirPrinter/AirPrinter.xcodeproj/project.pbxproj b/Archive/AirPrinter/AirPrinter.xcodeproj/project.pbxproj similarity index 90% rename from AirPrinter/AirPrinter.xcodeproj/project.pbxproj rename to Archive/AirPrinter/AirPrinter.xcodeproj/project.pbxproj index 687d0f6..d1e10dd 100644 --- a/AirPrinter/AirPrinter.xcodeproj/project.pbxproj +++ b/Archive/AirPrinter/AirPrinter.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ @@ -29,6 +29,9 @@ 5310096E13E73E49008FC50D /* WebViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = WebViewController.xib; sourceTree = ""; }; 5310097613E74913008FC50D /* UYLGenericPrintPageRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UYLGenericPrintPageRenderer.h; sourceTree = ""; }; 5310097713E74913008FC50D /* UYLGenericPrintPageRenderer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UYLGenericPrintPageRenderer.m; sourceTree = ""; }; + 5334609623CA6FC800BE943E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainWindow.xib; sourceTree = ""; }; + 5334609723CA6FC900BE943E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/RootViewController.xib; sourceTree = ""; }; + 5334609823CA6FC900BE943E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = "iPad/Base.lproj/MainWindow-iPad.xib"; sourceTree = ""; }; 5336C32213E46620007FB510 /* AirPrinter.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AirPrinter.app; sourceTree = BUILT_PRODUCTS_DIR; }; 5336C32613E46620007FB510 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 5336C32813E46620007FB510 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; @@ -39,11 +42,8 @@ 5336C33413E46620007FB510 /* AirPrinter-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "AirPrinter-Prefix.pch"; sourceTree = ""; }; 5336C33513E46620007FB510 /* AirPrinterAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AirPrinterAppDelegate.h; sourceTree = ""; }; 5336C33613E46620007FB510 /* AirPrinterAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AirPrinterAppDelegate.m; sourceTree = ""; }; - 5336C33913E46620007FB510 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainWindow.xib; sourceTree = ""; }; 5336C33B13E46620007FB510 /* RootViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RootViewController.h; sourceTree = ""; }; 5336C33C13E46620007FB510 /* RootViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RootViewController.m; sourceTree = ""; }; - 5336C33F13E46620007FB510 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/RootViewController.xib; sourceTree = ""; }; - 5336C34813E4663E007FB510 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = "iPad/en.lproj/MainWindow-iPad.xib"; sourceTree = ""; }; 53B8321B14069CB300E052A4 /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ @@ -186,12 +186,16 @@ /* Begin PBXProject section */ 5336C31913E46620007FB510 /* Project object */ = { isa = PBXProject; + attributes = { + LastUpgradeCheck = 1120; + }; buildConfigurationList = 5336C31C13E46620007FB510 /* Build configuration list for PBXProject "AirPrinter" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + compatibilityVersion = "Xcode 11.0"; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); mainGroup = 5336C31713E46620007FB510; productRefGroup = 5336C32313E46620007FB510 /* Products */; @@ -245,7 +249,7 @@ 5336C33813E46620007FB510 /* MainWindow.xib */ = { isa = PBXVariantGroup; children = ( - 5336C33913E46620007FB510 /* en */, + 5334609623CA6FC800BE943E /* Base */, ); name = MainWindow.xib; sourceTree = ""; @@ -253,7 +257,7 @@ 5336C33E13E46620007FB510 /* RootViewController.xib */ = { isa = PBXVariantGroup; children = ( - 5336C33F13E46620007FB510 /* en */, + 5334609723CA6FC900BE943E /* Base */, ); name = RootViewController.xib; sourceTree = ""; @@ -261,7 +265,7 @@ 5336C34713E4663E007FB510 /* MainWindow-iPad.xib */ = { isa = PBXVariantGroup; children = ( - 5336C34813E4663E007FB510 /* en */, + 5334609823CA6FC900BE943E /* Base */, ); name = "MainWindow-iPad.xib"; sourceTree = ""; @@ -273,9 +277,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; @@ -288,7 +293,8 @@ GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 4.3; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "-DUYL_DEBUG"; SDKROOT = iphoneos; }; @@ -298,7 +304,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; GCC_C_LANGUAGE_STANDARD = gnu99; @@ -306,7 +312,7 @@ GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 4.3; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; @@ -316,10 +322,14 @@ 5336C34413E46620007FB510 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = YES; + DEVELOPMENT_TEAM = LCC2J94N44; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "AirPrinter/AirPrinter-Prefix.pch"; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = "AirPrinter/AirPrinter-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.3; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; TARGETED_DEVICE_FAMILY = "1,2"; WRAPPER_EXTENSION = app; @@ -329,10 +339,14 @@ 5336C34513E46620007FB510 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = YES; + DEVELOPMENT_TEAM = LCC2J94N44; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "AirPrinter/AirPrinter-Prefix.pch"; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = "AirPrinter/AirPrinter-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.3; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; TARGETED_DEVICE_FAMILY = "1,2"; WRAPPER_EXTENSION = app; diff --git a/Archive/AirPrinter/AirPrinter.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Archive/AirPrinter/AirPrinter.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..ce2a0d9 --- /dev/null +++ b/Archive/AirPrinter/AirPrinter.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Archive/AirPrinter/AirPrinter.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Archive/AirPrinter/AirPrinter.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Archive/AirPrinter/AirPrinter.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/AirPrinter/AirPrinter/AirPrinter-Info.plist b/Archive/AirPrinter/AirPrinter/AirPrinter-Info.plist similarity index 94% rename from AirPrinter/AirPrinter/AirPrinter-Info.plist rename to Archive/AirPrinter/AirPrinter/AirPrinter-Info.plist index 3070946..cd79178 100644 --- a/AirPrinter/AirPrinter/AirPrinter-Info.plist +++ b/Archive/AirPrinter/AirPrinter/AirPrinter-Info.plist @@ -11,7 +11,7 @@ CFBundleIconFile CFBundleIdentifier - com.useyourloaf.${PRODUCT_NAME:rfc1034identifier} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/AirPrinter/AirPrinter/AirPrinter-Prefix.pch b/Archive/AirPrinter/AirPrinter/AirPrinter-Prefix.pch similarity index 100% rename from AirPrinter/AirPrinter/AirPrinter-Prefix.pch rename to Archive/AirPrinter/AirPrinter/AirPrinter-Prefix.pch diff --git a/AirPrinter/AirPrinter/AirPrinterAppDelegate.h b/Archive/AirPrinter/AirPrinter/AirPrinterAppDelegate.h similarity index 100% rename from AirPrinter/AirPrinter/AirPrinterAppDelegate.h rename to Archive/AirPrinter/AirPrinter/AirPrinterAppDelegate.h diff --git a/AirPrinter/AirPrinter/AirPrinterAppDelegate.m b/Archive/AirPrinter/AirPrinter/AirPrinterAppDelegate.m similarity index 100% rename from AirPrinter/AirPrinter/AirPrinterAppDelegate.m rename to Archive/AirPrinter/AirPrinter/AirPrinterAppDelegate.m diff --git a/Archive/AirPrinter/AirPrinter/Base.lproj/MainWindow.xib b/Archive/AirPrinter/AirPrinter/Base.lproj/MainWindow.xib new file mode 100644 index 0000000..a6f7cfc --- /dev/null +++ b/Archive/AirPrinter/AirPrinter/Base.lproj/MainWindow.xib @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Archive/AirPrinter/AirPrinter/Base.lproj/RootViewController.xib b/Archive/AirPrinter/AirPrinter/Base.lproj/RootViewController.xib new file mode 100644 index 0000000..ea17a5e --- /dev/null +++ b/Archive/AirPrinter/AirPrinter/Base.lproj/RootViewController.xib @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AirPrinter/AirPrinter/RootViewController.h b/Archive/AirPrinter/AirPrinter/RootViewController.h similarity index 100% rename from AirPrinter/AirPrinter/RootViewController.h rename to Archive/AirPrinter/AirPrinter/RootViewController.h diff --git a/AirPrinter/AirPrinter/RootViewController.m b/Archive/AirPrinter/AirPrinter/RootViewController.m similarity index 100% rename from AirPrinter/AirPrinter/RootViewController.m rename to Archive/AirPrinter/AirPrinter/RootViewController.m diff --git a/AirPrinter/AirPrinter/UYLGenericPrintPageRenderer.h b/Archive/AirPrinter/AirPrinter/UYLGenericPrintPageRenderer.h similarity index 100% rename from AirPrinter/AirPrinter/UYLGenericPrintPageRenderer.h rename to Archive/AirPrinter/AirPrinter/UYLGenericPrintPageRenderer.h diff --git a/AirPrinter/AirPrinter/UYLGenericPrintPageRenderer.m b/Archive/AirPrinter/AirPrinter/UYLGenericPrintPageRenderer.m similarity index 100% rename from AirPrinter/AirPrinter/UYLGenericPrintPageRenderer.m rename to Archive/AirPrinter/AirPrinter/UYLGenericPrintPageRenderer.m diff --git a/AirPrinter/AirPrinter/WebViewController.h b/Archive/AirPrinter/AirPrinter/WebViewController.h similarity index 100% rename from AirPrinter/AirPrinter/WebViewController.h rename to Archive/AirPrinter/AirPrinter/WebViewController.h diff --git a/AirPrinter/AirPrinter/WebViewController.m b/Archive/AirPrinter/AirPrinter/WebViewController.m similarity index 100% rename from AirPrinter/AirPrinter/WebViewController.m rename to Archive/AirPrinter/AirPrinter/WebViewController.m diff --git a/Archive/AirPrinter/AirPrinter/WebViewController.xib b/Archive/AirPrinter/AirPrinter/WebViewController.xib new file mode 100644 index 0000000..58e917e --- /dev/null +++ b/Archive/AirPrinter/AirPrinter/WebViewController.xib @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AirPrinter/AirPrinter/en.lproj/InfoPlist.strings b/Archive/AirPrinter/AirPrinter/en.lproj/InfoPlist.strings similarity index 100% rename from AirPrinter/AirPrinter/en.lproj/InfoPlist.strings rename to Archive/AirPrinter/AirPrinter/en.lproj/InfoPlist.strings diff --git a/Archive/AirPrinter/AirPrinter/iPad/Base.lproj/MainWindow-iPad.xib b/Archive/AirPrinter/AirPrinter/iPad/Base.lproj/MainWindow-iPad.xib new file mode 100644 index 0000000..52816fd --- /dev/null +++ b/Archive/AirPrinter/AirPrinter/iPad/Base.lproj/MainWindow-iPad.xib @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AirPrinter/AirPrinter/main.m b/Archive/AirPrinter/AirPrinter/main.m similarity index 100% rename from AirPrinter/AirPrinter/main.m rename to Archive/AirPrinter/AirPrinter/main.m diff --git a/AlertView/AlertView.xcodeproj/project.pbxproj b/Archive/AlertView/AlertView.xcodeproj/project.pbxproj similarity index 80% rename from AlertView/AlertView.xcodeproj/project.pbxproj rename to Archive/AlertView/AlertView.xcodeproj/project.pbxproj index 3bef398..0af1f42 100644 --- a/AlertView/AlertView.xcodeproj/project.pbxproj +++ b/Archive/AlertView/AlertView.xcodeproj/project.pbxproj @@ -18,6 +18,7 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 5334609223CA652200BE943E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/UYLViewController.xib; sourceTree = ""; }; 534028B91497F89D002DB13A /* AlertView.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AlertView.app; sourceTree = BUILT_PRODUCTS_DIR; }; 534028BD1497F89D002DB13A /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 534028BF1497F89D002DB13A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; @@ -30,7 +31,6 @@ 534028CD1497F89D002DB13A /* UYLAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UYLAppDelegate.m; sourceTree = ""; }; 534028CF1497F89D002DB13A /* UYLViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UYLViewController.h; sourceTree = ""; }; 534028D01497F89D002DB13A /* UYLViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UYLViewController.m; sourceTree = ""; }; - 534028D31497F89D002DB13A /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/UYLViewController.xib; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -124,14 +124,15 @@ 534028B01497F89D002DB13A /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0420; + LastUpgradeCheck = 1120; }; buildConfigurationList = 534028B31497F89D002DB13A /* Build configuration list for PBXProject "AlertView" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); mainGroup = 534028AE1497F89D002DB13A; productRefGroup = 534028BA1497F89D002DB13A /* Products */; @@ -180,7 +181,7 @@ 534028D21497F89D002DB13A /* UYLViewController.xib */ = { isa = PBXVariantGroup; children = ( - 534028D31497F89D002DB13A /* en */, + 5334609223CA652200BE943E /* Base */, ); name = UYLViewController.xib; sourceTree = ""; @@ -192,11 +193,31 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", @@ -204,10 +225,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; name = Debug; @@ -216,15 +242,38 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; + ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; @@ -234,9 +283,11 @@ 534028D81497F89D002DB13A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "AlertView/AlertView-Prefix.pch"; INFOPLIST_FILE = "AlertView/AlertView-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; @@ -245,9 +296,11 @@ 534028D91497F89D002DB13A /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "AlertView/AlertView-Prefix.pch"; INFOPLIST_FILE = "AlertView/AlertView-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; @@ -272,6 +325,7 @@ 534028D91497F89D002DB13A /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; diff --git a/Archive/AlertView/AlertView.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Archive/AlertView/AlertView.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..5fc5b6e --- /dev/null +++ b/Archive/AlertView/AlertView.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Archive/AlertView/AlertView.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Archive/AlertView/AlertView.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Archive/AlertView/AlertView.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/AlertView/AlertView/AlertView-Info.plist b/Archive/AlertView/AlertView/AlertView-Info.plist similarity index 94% rename from AlertView/AlertView/AlertView-Info.plist rename to Archive/AlertView/AlertView/AlertView-Info.plist index f5d7a12..5da589d 100644 --- a/AlertView/AlertView/AlertView-Info.plist +++ b/Archive/AlertView/AlertView/AlertView-Info.plist @@ -11,7 +11,7 @@ CFBundleIconFiles CFBundleIdentifier - com.useyourloaf.${PRODUCT_NAME:rfc1034identifier} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/AlertView/AlertView/AlertView-Prefix.pch b/Archive/AlertView/AlertView/AlertView-Prefix.pch similarity index 100% rename from AlertView/AlertView/AlertView-Prefix.pch rename to Archive/AlertView/AlertView/AlertView-Prefix.pch diff --git a/Archive/AlertView/AlertView/Base.lproj/UYLViewController.xib b/Archive/AlertView/AlertView/Base.lproj/UYLViewController.xib new file mode 100644 index 0000000..154769b --- /dev/null +++ b/Archive/AlertView/AlertView/Base.lproj/UYLViewController.xib @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AlertView/AlertView/UYLAppDelegate.h b/Archive/AlertView/AlertView/UYLAppDelegate.h similarity index 100% rename from AlertView/AlertView/UYLAppDelegate.h rename to Archive/AlertView/AlertView/UYLAppDelegate.h diff --git a/AlertView/AlertView/UYLAppDelegate.m b/Archive/AlertView/AlertView/UYLAppDelegate.m similarity index 100% rename from AlertView/AlertView/UYLAppDelegate.m rename to Archive/AlertView/AlertView/UYLAppDelegate.m diff --git a/AlertView/AlertView/UYLViewController.h b/Archive/AlertView/AlertView/UYLViewController.h similarity index 100% rename from AlertView/AlertView/UYLViewController.h rename to Archive/AlertView/AlertView/UYLViewController.h diff --git a/AlertView/AlertView/UYLViewController.m b/Archive/AlertView/AlertView/UYLViewController.m similarity index 100% rename from AlertView/AlertView/UYLViewController.m rename to Archive/AlertView/AlertView/UYLViewController.m diff --git a/AlertView/AlertView/en.lproj/InfoPlist.strings b/Archive/AlertView/AlertView/en.lproj/InfoPlist.strings similarity index 100% rename from AlertView/AlertView/en.lproj/InfoPlist.strings rename to Archive/AlertView/AlertView/en.lproj/InfoPlist.strings diff --git a/AlertView/AlertView/main.m b/Archive/AlertView/AlertView/main.m similarity index 100% rename from AlertView/AlertView/main.m rename to Archive/AlertView/AlertView/main.m diff --git a/BUG TableView State Restore/README b/Archive/BUG TableView State Restore/README similarity index 91% rename from BUG TableView State Restore/README rename to Archive/BUG TableView State Restore/README index 7a1ba94..e463f6e 100644 --- a/BUG TableView State Restore/README +++ b/Archive/BUG TableView State Restore/README @@ -22,7 +22,7 @@ as expected. For further details see the following blog post: -http://useyourloaf.com/blog/2013/04/07/bug-table-view-state-not-restored-when-embedded-in-navigation-controller.html +https://useyourloaf.com/blog/bug-table-view-state-not-restored-when-embedded-in-navigation-controller/ ************************************************************************** *** This bug has been tested and reproduced for iOS 6.0 and iOS 6.1.3. *** diff --git a/BUG TableView State Restore/UYLTableViewController.h b/Archive/BUG TableView State Restore/UYLTableViewController.h similarity index 100% rename from BUG TableView State Restore/UYLTableViewController.h rename to Archive/BUG TableView State Restore/UYLTableViewController.h diff --git a/BUG TableView State Restore/UYLTableViewController.m b/Archive/BUG TableView State Restore/UYLTableViewController.m similarity index 100% rename from BUG TableView State Restore/UYLTableViewController.m rename to Archive/BUG TableView State Restore/UYLTableViewController.m diff --git a/BUG TableView State Restore/restore.xcodeproj/project.pbxproj b/Archive/BUG TableView State Restore/restore.xcodeproj/project.pbxproj similarity index 86% rename from BUG TableView State Restore/restore.xcodeproj/project.pbxproj rename to Archive/BUG TableView State Restore/restore.xcodeproj/project.pbxproj index a3364b9..f3bb7b1 100644 --- a/BUG TableView State Restore/restore.xcodeproj/project.pbxproj +++ b/Archive/BUG TableView State Restore/restore.xcodeproj/project.pbxproj @@ -23,6 +23,7 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 5334608723CA275700BE943E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainStoryboard.storyboard; sourceTree = ""; }; 53370CBD16F62D8D0090DFC5 /* restore.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = restore.app; sourceTree = BUILT_PRODUCTS_DIR; }; 53370CC016F62D8D0090DFC5 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 53370CC216F62D8D0090DFC5 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; @@ -36,7 +37,6 @@ 53370CD216F62D8D0090DFC5 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; 53370CD416F62D8D0090DFC5 /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = ""; }; 53370CD616F62D8D0090DFC5 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; - 53370CD916F62D8D0090DFC5 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard.storyboard; sourceTree = ""; }; 53370CE316F62FF70090DFC5 /* UYLTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UYLTableViewController.h; path = ../UYLTableViewController.h; sourceTree = ""; }; 53370CE416F62FF70090DFC5 /* UYLTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = UYLTableViewController.m; path = ../UYLTableViewController.m; sourceTree = ""; }; 537C3B7517121F9100FA27ED /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; @@ -140,15 +140,16 @@ isa = PBXProject; attributes = { CLASSPREFIX = UYL; - LastUpgradeCheck = 0460; + LastUpgradeCheck = 1120; ORGANIZATIONNAME = "Keith Harrison"; }; buildConfigurationList = 53370CB816F62D8D0090DFC5 /* Build configuration list for PBXProject "restore" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); mainGroup = 53370CB416F62D8D0090DFC5; productRefGroup = 53370CBE16F62D8D0090DFC5 /* Products */; @@ -202,7 +203,7 @@ 53370CD816F62D8D0090DFC5 /* MainStoryboard.storyboard */ = { isa = PBXVariantGroup; children = ( - 53370CD916F62D8D0090DFC5 /* en */, + 5334608723CA275700BE943E /* Base */, ); name = MainStoryboard.storyboard; sourceTree = ""; @@ -214,28 +215,47 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; 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_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 6.1; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; @@ -245,21 +265,39 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; 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_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; + ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 6.1; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; @@ -272,6 +310,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "restore/restore-Prefix.pch"; INFOPLIST_FILE = "restore/restore-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; @@ -283,6 +322,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "restore/restore-Prefix.pch"; INFOPLIST_FILE = "restore/restore-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; diff --git a/Archive/BUG TableView State Restore/restore.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Archive/BUG TableView State Restore/restore.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..948f33d --- /dev/null +++ b/Archive/BUG TableView State Restore/restore.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Archive/BUG TableView State Restore/restore.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Archive/BUG TableView State Restore/restore.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Archive/BUG TableView State Restore/restore.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/BUG TableView State Restore/restore/en.lproj/MainStoryboard.storyboard b/Archive/BUG TableView State Restore/restore/Base.lproj/MainStoryboard.storyboard similarity index 60% rename from BUG TableView State Restore/restore/en.lproj/MainStoryboard.storyboard rename to Archive/BUG TableView State Restore/restore/Base.lproj/MainStoryboard.storyboard index e233416..39f83d9 100644 --- a/BUG TableView State Restore/restore/en.lproj/MainStoryboard.storyboard +++ b/Archive/BUG TableView State Restore/restore/Base.lproj/MainStoryboard.storyboard @@ -1,33 +1,37 @@ - - + + + - + + + - - + + - + - + - - + + - - - + @@ -39,17 +43,7 @@ - + - - - - - - - - - - - \ No newline at end of file + diff --git a/BUG TableView State Restore/restore/Default-568h@2x.png b/Archive/BUG TableView State Restore/restore/Default-568h@2x.png similarity index 100% rename from BUG TableView State Restore/restore/Default-568h@2x.png rename to Archive/BUG TableView State Restore/restore/Default-568h@2x.png diff --git a/BUG TableView State Restore/restore/Default.png b/Archive/BUG TableView State Restore/restore/Default.png similarity index 100% rename from BUG TableView State Restore/restore/Default.png rename to Archive/BUG TableView State Restore/restore/Default.png diff --git a/BUG TableView State Restore/restore/Default@2x.png b/Archive/BUG TableView State Restore/restore/Default@2x.png similarity index 100% rename from BUG TableView State Restore/restore/Default@2x.png rename to Archive/BUG TableView State Restore/restore/Default@2x.png diff --git a/BUG TableView State Restore/restore/NavStoryboard.storyboard b/Archive/BUG TableView State Restore/restore/NavStoryboard.storyboard similarity index 100% rename from BUG TableView State Restore/restore/NavStoryboard.storyboard rename to Archive/BUG TableView State Restore/restore/NavStoryboard.storyboard diff --git a/BUG TableView State Restore/restore/UYLAppDelegate.h b/Archive/BUG TableView State Restore/restore/UYLAppDelegate.h similarity index 100% rename from BUG TableView State Restore/restore/UYLAppDelegate.h rename to Archive/BUG TableView State Restore/restore/UYLAppDelegate.h diff --git a/BUG TableView State Restore/restore/UYLAppDelegate.m b/Archive/BUG TableView State Restore/restore/UYLAppDelegate.m similarity index 100% rename from BUG TableView State Restore/restore/UYLAppDelegate.m rename to Archive/BUG TableView State Restore/restore/UYLAppDelegate.m diff --git a/BUG TableView State Restore/restore/en.lproj/InfoPlist.strings b/Archive/BUG TableView State Restore/restore/en.lproj/InfoPlist.strings similarity index 100% rename from BUG TableView State Restore/restore/en.lproj/InfoPlist.strings rename to Archive/BUG TableView State Restore/restore/en.lproj/InfoPlist.strings diff --git a/BUG TableView State Restore/restore/main.m b/Archive/BUG TableView State Restore/restore/main.m similarity index 100% rename from BUG TableView State Restore/restore/main.m rename to Archive/BUG TableView State Restore/restore/main.m diff --git a/BUG TableView State Restore/restore/restore-Info.plist b/Archive/BUG TableView State Restore/restore/restore-Info.plist similarity index 94% rename from BUG TableView State Restore/restore/restore-Info.plist rename to Archive/BUG TableView State Restore/restore/restore-Info.plist index e20c6df..36d8600 100644 --- a/BUG TableView State Restore/restore/restore-Info.plist +++ b/Archive/BUG TableView State Restore/restore/restore-Info.plist @@ -9,7 +9,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.useyourloaf.${PRODUCT_NAME:rfc1034identifier} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/BUG TableView State Restore/restore/restore-Prefix.pch b/Archive/BUG TableView State Restore/restore/restore-Prefix.pch similarity index 100% rename from BUG TableView State Restore/restore/restore-Prefix.pch rename to Archive/BUG TableView State Restore/restore/restore-Prefix.pch diff --git a/Collection/Collection.xcodeproj/project.pbxproj b/Archive/Collection/Collection.xcodeproj/project.pbxproj similarity index 92% rename from Collection/Collection.xcodeproj/project.pbxproj rename to Archive/Collection/Collection.xcodeproj/project.pbxproj index 83cd935..84347c5 100644 --- a/Collection/Collection.xcodeproj/project.pbxproj +++ b/Archive/Collection/Collection.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ @@ -209,7 +209,7 @@ isa = PBXProject; attributes = { CLASSPREFIX = UYL; - LastUpgradeCheck = 0500; + LastUpgradeCheck = 1120; ORGANIZATIONNAME = "Keith Harrison"; TargetAttributes = { 53A5F89017E3BA57000DB6B5 = { @@ -221,8 +221,8 @@ }; }; buildConfigurationList = 53A5F88C17E3BA57000DB6B5 /* Build configuration list for PBXProject "Collection" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + compatibilityVersion = "Xcode 11.0"; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, @@ -323,23 +323,37 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 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_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_IMPLICIT_RETAIN_SELF = 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", @@ -352,7 +366,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = 2; @@ -363,30 +377,43 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 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_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_IMPLICIT_RETAIN_SELF = 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = 2; VALIDATE_PRODUCT = YES; @@ -402,6 +429,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "Collection/Collection-Prefix.pch"; INFOPLIST_FILE = "Collection/Collection-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; @@ -416,6 +444,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "Collection/Collection-Prefix.pch"; INFOPLIST_FILE = "Collection/Collection-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; @@ -424,7 +453,6 @@ 53A5F8C717E3BA57000DB6B5 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Collection.app/Collection"; FRAMEWORK_SEARCH_PATHS = ( "$(SDKROOT)/Developer/Library/Frameworks", @@ -438,6 +466,7 @@ "$(inherited)", ); INFOPLIST_FILE = "CollectionTests/CollectionTests-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; WRAPPER_EXTENSION = xctest; @@ -447,7 +476,6 @@ 53A5F8C817E3BA57000DB6B5 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Collection.app/Collection"; FRAMEWORK_SEARCH_PATHS = ( "$(SDKROOT)/Developer/Library/Frameworks", @@ -457,6 +485,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "Collection/Collection-Prefix.pch"; INFOPLIST_FILE = "CollectionTests/CollectionTests-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; WRAPPER_EXTENSION = xctest; diff --git a/Archive/Collection/Collection.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Archive/Collection/Collection.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..05bb496 --- /dev/null +++ b/Archive/Collection/Collection.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Archive/Collection/Collection.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Archive/Collection/Collection.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Archive/Collection/Collection.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Collection/Collection/Base.lproj/Main.storyboard b/Archive/Collection/Collection/Base.lproj/Main.storyboard similarity index 100% rename from Collection/Collection/Base.lproj/Main.storyboard rename to Archive/Collection/Collection/Base.lproj/Main.storyboard diff --git a/Collection/Collection/Collection-Info.plist b/Archive/Collection/Collection/Collection-Info.plist similarity index 94% rename from Collection/Collection/Collection-Info.plist rename to Archive/Collection/Collection/Collection-Info.plist index 6614037..f1c66e4 100644 --- a/Collection/Collection/Collection-Info.plist +++ b/Archive/Collection/Collection/Collection-Info.plist @@ -9,7 +9,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.useyourloaf.${PRODUCT_NAME:rfc1034identifier} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/Collection/Collection/Collection-Prefix.pch b/Archive/Collection/Collection/Collection-Prefix.pch similarity index 100% rename from Collection/Collection/Collection-Prefix.pch rename to Archive/Collection/Collection/Collection-Prefix.pch diff --git a/Collection/Collection/Images.xcassets/AppIcon.appiconset/Contents.json b/Archive/Collection/Collection/Images.xcassets/AppIcon.appiconset/Contents.json similarity index 69% rename from Collection/Collection/Images.xcassets/AppIcon.appiconset/Contents.json rename to Archive/Collection/Collection/Images.xcassets/AppIcon.appiconset/Contents.json index 55b6e38..8279c03 100644 --- a/Collection/Collection/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/Archive/Collection/Collection/Images.xcassets/AppIcon.appiconset/Contents.json @@ -1,5 +1,15 @@ { "images" : [ + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, { "size" : "29x29", "idiom" : "ipad", @@ -35,6 +45,16 @@ "idiom" : "ipad", "filename" : "icon-76@2x.png", "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" } ], "info" : { diff --git a/Collection/Collection/Images.xcassets/AppIcon.appiconset/icon-29.png b/Archive/Collection/Collection/Images.xcassets/AppIcon.appiconset/icon-29.png similarity index 100% rename from Collection/Collection/Images.xcassets/AppIcon.appiconset/icon-29.png rename to Archive/Collection/Collection/Images.xcassets/AppIcon.appiconset/icon-29.png diff --git a/Collection/Collection/Images.xcassets/AppIcon.appiconset/icon-29@2x.png b/Archive/Collection/Collection/Images.xcassets/AppIcon.appiconset/icon-29@2x.png similarity index 100% rename from Collection/Collection/Images.xcassets/AppIcon.appiconset/icon-29@2x.png rename to Archive/Collection/Collection/Images.xcassets/AppIcon.appiconset/icon-29@2x.png diff --git a/Collection/Collection/Images.xcassets/AppIcon.appiconset/icon-40.png b/Archive/Collection/Collection/Images.xcassets/AppIcon.appiconset/icon-40.png similarity index 100% rename from Collection/Collection/Images.xcassets/AppIcon.appiconset/icon-40.png rename to Archive/Collection/Collection/Images.xcassets/AppIcon.appiconset/icon-40.png diff --git a/Collection/Collection/Images.xcassets/AppIcon.appiconset/icon-40@2x.png b/Archive/Collection/Collection/Images.xcassets/AppIcon.appiconset/icon-40@2x.png similarity index 100% rename from Collection/Collection/Images.xcassets/AppIcon.appiconset/icon-40@2x.png rename to Archive/Collection/Collection/Images.xcassets/AppIcon.appiconset/icon-40@2x.png diff --git a/Collection/Collection/Images.xcassets/AppIcon.appiconset/icon-76.png b/Archive/Collection/Collection/Images.xcassets/AppIcon.appiconset/icon-76.png similarity index 100% rename from Collection/Collection/Images.xcassets/AppIcon.appiconset/icon-76.png rename to Archive/Collection/Collection/Images.xcassets/AppIcon.appiconset/icon-76.png diff --git a/Collection/Collection/Images.xcassets/AppIcon.appiconset/icon-76@2x.png b/Archive/Collection/Collection/Images.xcassets/AppIcon.appiconset/icon-76@2x.png similarity index 100% rename from Collection/Collection/Images.xcassets/AppIcon.appiconset/icon-76@2x.png rename to Archive/Collection/Collection/Images.xcassets/AppIcon.appiconset/icon-76@2x.png diff --git a/TwitterSearch/TwitterSearch/Images.xcassets/Contents.json b/Archive/Collection/Collection/Images.xcassets/Contents.json similarity index 100% rename from TwitterSearch/TwitterSearch/Images.xcassets/Contents.json rename to Archive/Collection/Collection/Images.xcassets/Contents.json diff --git a/Collection/Collection/Images.xcassets/LaunchImage.launchimage/Contents.json b/Archive/Collection/Collection/Images.xcassets/LaunchImage.launchimage/Contents.json similarity index 100% rename from Collection/Collection/Images.xcassets/LaunchImage.launchimage/Contents.json rename to Archive/Collection/Collection/Images.xcassets/LaunchImage.launchimage/Contents.json index 2d612de..bc976a6 100644 --- a/Collection/Collection/Images.xcassets/LaunchImage.launchimage/Contents.json +++ b/Archive/Collection/Collection/Images.xcassets/LaunchImage.launchimage/Contents.json @@ -3,33 +3,33 @@ { "orientation" : "portrait", "idiom" : "ipad", + "filename" : "Default-Portrait~ipad.png", "extent" : "full-screen", "minimum-system-version" : "7.0", - "filename" : "Default-Portrait~ipad.png", "scale" : "1x" }, { "orientation" : "landscape", "idiom" : "ipad", + "filename" : "Default-Landscape~ipad.png", "extent" : "full-screen", "minimum-system-version" : "7.0", - "filename" : "Default-Landscape~ipad.png", "scale" : "1x" }, { "orientation" : "portrait", "idiom" : "ipad", + "filename" : "Default-Portrait@2x~ipad.png", "extent" : "full-screen", "minimum-system-version" : "7.0", - "filename" : "Default-Portrait@2x~ipad.png", "scale" : "2x" }, { "orientation" : "landscape", "idiom" : "ipad", + "filename" : "Default-Landscape@2x~ipad.png", "extent" : "full-screen", "minimum-system-version" : "7.0", - "filename" : "Default-Landscape@2x~ipad.png", "scale" : "2x" } ], diff --git a/Collection/Collection/Images.xcassets/LaunchImage.launchimage/Default-Landscape@2x~ipad.png b/Archive/Collection/Collection/Images.xcassets/LaunchImage.launchimage/Default-Landscape@2x~ipad.png similarity index 100% rename from Collection/Collection/Images.xcassets/LaunchImage.launchimage/Default-Landscape@2x~ipad.png rename to Archive/Collection/Collection/Images.xcassets/LaunchImage.launchimage/Default-Landscape@2x~ipad.png diff --git a/Collection/Collection/Images.xcassets/LaunchImage.launchimage/Default-Landscape~ipad.png b/Archive/Collection/Collection/Images.xcassets/LaunchImage.launchimage/Default-Landscape~ipad.png similarity index 100% rename from Collection/Collection/Images.xcassets/LaunchImage.launchimage/Default-Landscape~ipad.png rename to Archive/Collection/Collection/Images.xcassets/LaunchImage.launchimage/Default-Landscape~ipad.png diff --git a/Collection/Collection/Images.xcassets/LaunchImage.launchimage/Default-Portrait@2x~ipad.png b/Archive/Collection/Collection/Images.xcassets/LaunchImage.launchimage/Default-Portrait@2x~ipad.png similarity index 100% rename from Collection/Collection/Images.xcassets/LaunchImage.launchimage/Default-Portrait@2x~ipad.png rename to Archive/Collection/Collection/Images.xcassets/LaunchImage.launchimage/Default-Portrait@2x~ipad.png diff --git a/Collection/Collection/Images.xcassets/LaunchImage.launchimage/Default-Portrait~ipad.png b/Archive/Collection/Collection/Images.xcassets/LaunchImage.launchimage/Default-Portrait~ipad.png similarity index 100% rename from Collection/Collection/Images.xcassets/LaunchImage.launchimage/Default-Portrait~ipad.png rename to Archive/Collection/Collection/Images.xcassets/LaunchImage.launchimage/Default-Portrait~ipad.png diff --git a/Collection/Collection/UYLAppDelegate.h b/Archive/Collection/Collection/UYLAppDelegate.h similarity index 100% rename from Collection/Collection/UYLAppDelegate.h rename to Archive/Collection/Collection/UYLAppDelegate.h diff --git a/Collection/Collection/UYLAppDelegate.m b/Archive/Collection/Collection/UYLAppDelegate.m similarity index 100% rename from Collection/Collection/UYLAppDelegate.m rename to Archive/Collection/Collection/UYLAppDelegate.m diff --git a/Collection/Collection/UYLCollectionViewController.h b/Archive/Collection/Collection/UYLCollectionViewController.h similarity index 100% rename from Collection/Collection/UYLCollectionViewController.h rename to Archive/Collection/Collection/UYLCollectionViewController.h diff --git a/Collection/Collection/UYLCollectionViewController.m b/Archive/Collection/Collection/UYLCollectionViewController.m similarity index 100% rename from Collection/Collection/UYLCollectionViewController.m rename to Archive/Collection/Collection/UYLCollectionViewController.m diff --git a/Collection/Collection/UYLSimpleCell.h b/Archive/Collection/Collection/UYLSimpleCell.h similarity index 100% rename from Collection/Collection/UYLSimpleCell.h rename to Archive/Collection/Collection/UYLSimpleCell.h diff --git a/Collection/Collection/UYLSimpleCell.m b/Archive/Collection/Collection/UYLSimpleCell.m similarity index 100% rename from Collection/Collection/UYLSimpleCell.m rename to Archive/Collection/Collection/UYLSimpleCell.m diff --git a/Collection/Collection/UYLViewController.h b/Archive/Collection/Collection/UYLViewController.h similarity index 100% rename from Collection/Collection/UYLViewController.h rename to Archive/Collection/Collection/UYLViewController.h diff --git a/Collection/Collection/UYLViewController.m b/Archive/Collection/Collection/UYLViewController.m similarity index 100% rename from Collection/Collection/UYLViewController.m rename to Archive/Collection/Collection/UYLViewController.m diff --git a/Collection/Collection/en.lproj/InfoPlist.strings b/Archive/Collection/Collection/en.lproj/InfoPlist.strings similarity index 100% rename from Collection/Collection/en.lproj/InfoPlist.strings rename to Archive/Collection/Collection/en.lproj/InfoPlist.strings diff --git a/Collection/Collection/main.m b/Archive/Collection/Collection/main.m similarity index 100% rename from Collection/Collection/main.m rename to Archive/Collection/Collection/main.m diff --git a/Collection/CollectionTests/CollectionTests-Info.plist b/Archive/Collection/CollectionTests/CollectionTests-Info.plist similarity index 90% rename from Collection/CollectionTests/CollectionTests-Info.plist rename to Archive/Collection/CollectionTests/CollectionTests-Info.plist index 6dd5353..169b6f7 100644 --- a/Collection/CollectionTests/CollectionTests-Info.plist +++ b/Archive/Collection/CollectionTests/CollectionTests-Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.useyourloaf.${PRODUCT_NAME:rfc1034identifier} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType diff --git a/Collection/CollectionTests/CollectionTests.m b/Archive/Collection/CollectionTests/CollectionTests.m similarity index 100% rename from Collection/CollectionTests/CollectionTests.m rename to Archive/Collection/CollectionTests/CollectionTests.m diff --git a/Collection/CollectionTests/en.lproj/InfoPlist.strings b/Archive/Collection/CollectionTests/en.lproj/InfoPlist.strings similarity index 100% rename from Collection/CollectionTests/en.lproj/InfoPlist.strings rename to Archive/Collection/CollectionTests/en.lproj/InfoPlist.strings diff --git a/Collection/README b/Archive/Collection/README similarity index 65% rename from Collection/README rename to Archive/Collection/README index 54a5631..9975405 100644 --- a/Collection/README +++ b/Archive/Collection/README @@ -4,11 +4,13 @@ Collection - A Simple Collection View Version 1.0 27 September 2013 Initial version. ======================================================================= +**THIS BUG WAS RESOLVED IN iOS 9.3** + This is a example project to reproduce a bug in the way that iOS 7 repostions popovers when a view is rotated. For further details see the following blog post: -http://useyourloaf.com/blog/2013/09/27/uipopover-arrow-not-repositioned-correctly-on-rotation.html +https://useyourloaf.com/blog/uipopover-arrow-not-repositioned-correctly-on-rotation/ -You can also view the bug report on Open Radar at http://openradar.appspot.com/14995477 \ No newline at end of file +You can also view the bug report on Open Radar at https://openradar.appspot.com/14995477 diff --git a/MasterSlide/MasterSlide.xcodeproj/project.pbxproj b/Archive/MasterSlide/MasterSlide.xcodeproj/project.pbxproj similarity index 81% rename from MasterSlide/MasterSlide.xcodeproj/project.pbxproj rename to Archive/MasterSlide/MasterSlide.xcodeproj/project.pbxproj index 148bd98..8383db9 100644 --- a/MasterSlide/MasterSlide.xcodeproj/project.pbxproj +++ b/Archive/MasterSlide/MasterSlide.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ @@ -21,6 +21,8 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 5334609323CA65EF00BE943E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/UYLMasterViewController.xib; sourceTree = ""; }; + 5334609423CA65F000BE943E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/UYLDetailViewController.xib; sourceTree = ""; }; 53A7615E146C7E9600B4F8F6 /* masterslide.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = masterslide.app; sourceTree = BUILT_PRODUCTS_DIR; }; 53A76162146C7E9600B4F8F6 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 53A76164146C7E9600B4F8F6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; @@ -35,8 +37,6 @@ 53A76175146C7E9600B4F8F6 /* UYLMasterViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UYLMasterViewController.m; sourceTree = ""; }; 53A76177146C7E9600B4F8F6 /* UYLDetailViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UYLDetailViewController.h; sourceTree = ""; }; 53A76178146C7E9600B4F8F6 /* UYLDetailViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UYLDetailViewController.m; sourceTree = ""; }; - 53A7617B146C7E9700B4F8F6 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/UYLMasterViewController.xib; sourceTree = ""; }; - 53A7617E146C7E9700B4F8F6 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/UYLDetailViewController.xib; sourceTree = ""; }; 53FF8C18146F264400005E54 /* MainWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; }; /* End PBXFileReference section */ @@ -151,14 +151,15 @@ 53A76155146C7E9600B4F8F6 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0420; + LastUpgradeCheck = 1120; }; - buildConfigurationList = 53A76158146C7E9600B4F8F6 /* Build configuration list for PBXProject "masterslide" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + buildConfigurationList = 53A76158146C7E9600B4F8F6 /* Build configuration list for PBXProject "MasterSlide" */; + compatibilityVersion = "Xcode 11.0"; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); mainGroup = 53A76153146C7E9600B4F8F6; productRefGroup = 53A7615F146C7E9600B4F8F6 /* Products */; @@ -210,7 +211,7 @@ 53A7617A146C7E9700B4F8F6 /* UYLMasterViewController.xib */ = { isa = PBXVariantGroup; children = ( - 53A7617B146C7E9700B4F8F6 /* en */, + 5334609323CA65EF00BE943E /* Base */, ); name = UYLMasterViewController.xib; sourceTree = ""; @@ -218,7 +219,7 @@ 53A7617D146C7E9700B4F8F6 /* UYLDetailViewController.xib */ = { isa = PBXVariantGroup; children = ( - 53A7617E146C7E9700B4F8F6 /* en */, + 5334609423CA65F000BE943E /* Base */, ); name = UYLDetailViewController.xib; sourceTree = ""; @@ -230,11 +231,31 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", @@ -242,10 +263,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = 2; }; @@ -255,15 +281,38 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; + ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = 2; @@ -274,9 +323,11 @@ 53A76183146C7E9700B4F8F6 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "masterslide/masterslide-Prefix.pch"; INFOPLIST_FILE = "masterslide/masterslide-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; @@ -285,9 +336,11 @@ 53A76184146C7E9700B4F8F6 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "masterslide/masterslide-Prefix.pch"; INFOPLIST_FILE = "masterslide/masterslide-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; @@ -296,7 +349,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 53A76158146C7E9600B4F8F6 /* Build configuration list for PBXProject "masterslide" */ = { + 53A76158146C7E9600B4F8F6 /* Build configuration list for PBXProject "MasterSlide" */ = { isa = XCConfigurationList; buildConfigurations = ( 53A76180146C7E9700B4F8F6 /* Debug */, diff --git a/Archive/MasterSlide/MasterSlide.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Archive/MasterSlide/MasterSlide.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..2c11c20 --- /dev/null +++ b/Archive/MasterSlide/MasterSlide.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Archive/MasterSlide/MasterSlide.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Archive/MasterSlide/MasterSlide.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Archive/MasterSlide/MasterSlide.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Archive/MasterSlide/MasterSlide/Base.lproj/UYLDetailViewController.xib b/Archive/MasterSlide/MasterSlide/Base.lproj/UYLDetailViewController.xib new file mode 100644 index 0000000..4f045c5 --- /dev/null +++ b/Archive/MasterSlide/MasterSlide/Base.lproj/UYLDetailViewController.xib @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Archive/MasterSlide/MasterSlide/Base.lproj/UYLMasterViewController.xib b/Archive/MasterSlide/MasterSlide/Base.lproj/UYLMasterViewController.xib new file mode 100644 index 0000000..77a8e58 --- /dev/null +++ b/Archive/MasterSlide/MasterSlide/Base.lproj/UYLMasterViewController.xib @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Archive/MasterSlide/MasterSlide/MainWindow.xib b/Archive/MasterSlide/MasterSlide/MainWindow.xib new file mode 100644 index 0000000..dc9f4e1 --- /dev/null +++ b/Archive/MasterSlide/MasterSlide/MainWindow.xib @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MasterSlide/MasterSlide/MasterSlide-Info.plist b/Archive/MasterSlide/MasterSlide/MasterSlide-Info.plist similarity index 95% rename from MasterSlide/MasterSlide/MasterSlide-Info.plist rename to Archive/MasterSlide/MasterSlide/MasterSlide-Info.plist index 410100c..7d691bc 100644 --- a/MasterSlide/MasterSlide/MasterSlide-Info.plist +++ b/Archive/MasterSlide/MasterSlide/MasterSlide-Info.plist @@ -11,7 +11,7 @@ CFBundleIconFiles CFBundleIdentifier - com.useyourloaf.${PRODUCT_NAME:rfc1034identifier} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName @@ -26,6 +26,8 @@ 1.0 LSRequiresIPhoneOS + NSMainNibFile + MainWindow UIRequiredDeviceCapabilities armv7 @@ -43,7 +45,5 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight - NSMainNibFile - MainWindow diff --git a/MasterSlide/MasterSlide/MasterSlide-Prefix.pch b/Archive/MasterSlide/MasterSlide/MasterSlide-Prefix.pch similarity index 100% rename from MasterSlide/MasterSlide/MasterSlide-Prefix.pch rename to Archive/MasterSlide/MasterSlide/MasterSlide-Prefix.pch diff --git a/MasterSlide/MasterSlide/UYLAppDelegate.h b/Archive/MasterSlide/MasterSlide/UYLAppDelegate.h similarity index 100% rename from MasterSlide/MasterSlide/UYLAppDelegate.h rename to Archive/MasterSlide/MasterSlide/UYLAppDelegate.h diff --git a/MasterSlide/MasterSlide/UYLAppDelegate.m b/Archive/MasterSlide/MasterSlide/UYLAppDelegate.m similarity index 100% rename from MasterSlide/MasterSlide/UYLAppDelegate.m rename to Archive/MasterSlide/MasterSlide/UYLAppDelegate.m diff --git a/MasterSlide/MasterSlide/UYLDetailViewController.h b/Archive/MasterSlide/MasterSlide/UYLDetailViewController.h similarity index 100% rename from MasterSlide/MasterSlide/UYLDetailViewController.h rename to Archive/MasterSlide/MasterSlide/UYLDetailViewController.h diff --git a/MasterSlide/MasterSlide/UYLDetailViewController.m b/Archive/MasterSlide/MasterSlide/UYLDetailViewController.m similarity index 100% rename from MasterSlide/MasterSlide/UYLDetailViewController.m rename to Archive/MasterSlide/MasterSlide/UYLDetailViewController.m diff --git a/MasterSlide/MasterSlide/UYLMasterViewController.h b/Archive/MasterSlide/MasterSlide/UYLMasterViewController.h similarity index 100% rename from MasterSlide/MasterSlide/UYLMasterViewController.h rename to Archive/MasterSlide/MasterSlide/UYLMasterViewController.h diff --git a/MasterSlide/MasterSlide/UYLMasterViewController.m b/Archive/MasterSlide/MasterSlide/UYLMasterViewController.m similarity index 100% rename from MasterSlide/MasterSlide/UYLMasterViewController.m rename to Archive/MasterSlide/MasterSlide/UYLMasterViewController.m diff --git a/DynamicText/DynamicText/en.lproj/InfoPlist.strings b/Archive/MasterSlide/MasterSlide/en.lproj/InfoPlist.strings similarity index 100% rename from DynamicText/DynamicText/en.lproj/InfoPlist.strings rename to Archive/MasterSlide/MasterSlide/en.lproj/InfoPlist.strings diff --git a/MasterSlide/MasterSlide/main.m b/Archive/MasterSlide/MasterSlide/main.m similarity index 100% rename from MasterSlide/MasterSlide/main.m rename to Archive/MasterSlide/MasterSlide/main.m diff --git a/RemindMe/Base.lproj/Localizable.strings b/Archive/RemindMe/Base.lproj/Localizable.strings similarity index 100% rename from RemindMe/Base.lproj/Localizable.strings rename to Archive/RemindMe/Base.lproj/Localizable.strings diff --git a/RemindMe/Base.lproj/Main.storyboard b/Archive/RemindMe/Base.lproj/Main.storyboard similarity index 76% rename from RemindMe/Base.lproj/Main.storyboard rename to Archive/RemindMe/Base.lproj/Main.storyboard index 9994924..d10e6fb 100644 --- a/RemindMe/Base.lproj/Main.storyboard +++ b/Archive/RemindMe/Base.lproj/Main.storyboard @@ -1,9 +1,9 @@ - - + + + - - + @@ -19,24 +19,25 @@ - - + + + - diff --git a/RemindMe/Classes/AppDelegate.h b/Archive/RemindMe/Classes/AppDelegate.h similarity index 100% rename from RemindMe/Classes/AppDelegate.h rename to Archive/RemindMe/Classes/AppDelegate.h diff --git a/RemindMe/Classes/AppDelegate.m b/Archive/RemindMe/Classes/AppDelegate.m similarity index 100% rename from RemindMe/Classes/AppDelegate.m rename to Archive/RemindMe/Classes/AppDelegate.m diff --git a/RemindMe/Classes/RemindMeViewController.h b/Archive/RemindMe/Classes/RemindMeViewController.h similarity index 100% rename from RemindMe/Classes/RemindMeViewController.h rename to Archive/RemindMe/Classes/RemindMeViewController.h diff --git a/RemindMe/Classes/RemindMeViewController.m b/Archive/RemindMe/Classes/RemindMeViewController.m similarity index 100% rename from RemindMe/Classes/RemindMeViewController.m rename to Archive/RemindMe/Classes/RemindMeViewController.m diff --git a/RemindMe/Info.plist b/Archive/RemindMe/Info.plist similarity index 100% rename from RemindMe/Info.plist rename to Archive/RemindMe/Info.plist diff --git a/RemindMe/LaunchScreen.storyboard b/Archive/RemindMe/LaunchScreen.storyboard similarity index 100% rename from RemindMe/LaunchScreen.storyboard rename to Archive/RemindMe/LaunchScreen.storyboard diff --git a/RemindMe/README.md b/Archive/RemindMe/README.md similarity index 61% rename from RemindMe/README.md rename to Archive/RemindMe/README.md index 4292e86..fe0054d 100644 --- a/RemindMe/README.md +++ b/Archive/RemindMe/README.md @@ -8,5 +8,5 @@ The RemindMe App is a demonstration on how to schedule local notifications using The original posts were written for iOS 4 a long time ago: -+ [Repeating an iOS local notification](http://useyourloaf.com/blog/repeating-an-ios-local-notification/) -+ [Add Local Notification with iOS 4](http://useyourloaf.com/blog/adding-local-notifications-with-ios-4/) ++ [Repeating an iOS local notification](https://useyourloaf.com/blog/repeating-an-ios-local-notification/) ++ [Add Local Notification with iOS 4](https://useyourloaf.com/blog/adding-local-notifications-with-ios-4/) diff --git a/RemindMe/RemindMe.xcodeproj/project.pbxproj b/Archive/RemindMe/RemindMe.xcodeproj/project.pbxproj similarity index 93% rename from RemindMe/RemindMe.xcodeproj/project.pbxproj rename to Archive/RemindMe/RemindMe.xcodeproj/project.pbxproj index 745043b..f12800f 100755 --- a/RemindMe/RemindMe.xcodeproj/project.pbxproj +++ b/Archive/RemindMe/RemindMe.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 47; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ @@ -119,7 +119,7 @@ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0820; + LastUpgradeCheck = 1120; ORGANIZATIONNAME = "Keith Harrison"; TargetAttributes = { 1D6058900D05DD3D006BFB54 = { @@ -129,15 +129,12 @@ }; }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "RemindMe" */; - compatibilityVersion = "Xcode 6.3"; - developmentRegion = English; + compatibilityVersion = "Xcode 11.0"; + developmentRegion = en; hasScannedForEncodings = 1; knownRegions = ( - English, - Japanese, - French, - German, Base, + en, ); mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; projectDirPath = ""; @@ -238,12 +235,20 @@ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 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_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + 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; @@ -270,12 +275,20 @@ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 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_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + 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; diff --git a/Archive/RemindMe/RemindMe.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Archive/RemindMe/RemindMe.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..7c537ff --- /dev/null +++ b/Archive/RemindMe/RemindMe.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,6 @@ + + + + + diff --git a/Archive/RemindMe/RemindMe.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Archive/RemindMe/RemindMe.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Archive/RemindMe/RemindMe.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/RemindMe/RemindMe/Images.xcassets/AppIcon.appiconset/Contents.json b/Archive/RemindMe/RemindMe/Images.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from RemindMe/RemindMe/Images.xcassets/AppIcon.appiconset/Contents.json rename to Archive/RemindMe/RemindMe/Images.xcassets/AppIcon.appiconset/Contents.json diff --git a/Archive/RemindMe/RemindMe/Images.xcassets/Contents.json b/Archive/RemindMe/RemindMe/Images.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/Archive/RemindMe/RemindMe/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/RemindMe/main.m b/Archive/RemindMe/main.m similarity index 100% rename from RemindMe/main.m rename to Archive/RemindMe/main.m diff --git a/StaticTable/README.markdown b/Archive/StaticTable/README.markdown similarity index 100% rename from StaticTable/README.markdown rename to Archive/StaticTable/README.markdown diff --git a/StaticTable/StaticTable.xcodeproj/project.pbxproj b/Archive/StaticTable/StaticTable.xcodeproj/project.pbxproj similarity index 87% rename from StaticTable/StaticTable.xcodeproj/project.pbxproj rename to Archive/StaticTable/StaticTable.xcodeproj/project.pbxproj index bb3438f..e8d0a88 100644 --- a/StaticTable/StaticTable.xcodeproj/project.pbxproj +++ b/Archive/StaticTable/StaticTable.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ @@ -42,7 +42,7 @@ 532B11F7154F362C004B4780 /* second.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = second.png; sourceTree = ""; }; 532B11F9154F362C004B4780 /* second@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "second@2x.png"; sourceTree = ""; }; 532B1206154F3712004B4780 /* Settings.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Settings.storyboard; sourceTree = ""; }; - 53ACC43215582581005E26DC /* README.markdown */ = {isa = PBXFileReference; fileEncoding = 4; path = README.markdown; sourceTree = ""; }; + 53ACC43215582581005E26DC /* README.markdown */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.markdown; sourceTree = ""; }; 53F33DE215508DBE0094277E /* UYLGeneralSettingsTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UYLGeneralSettingsTableViewController.h; sourceTree = ""; }; 53F33DE315508DBE0094277E /* UYLGeneralSettingsTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UYLGeneralSettingsTableViewController.m; sourceTree = ""; }; 53F33DE915509B360094277E /* UYLAdvancedSettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UYLAdvancedSettingsViewController.h; sourceTree = ""; }; @@ -190,14 +190,15 @@ isa = PBXProject; attributes = { CLASSPREFIX = UYL; - LastUpgradeCheck = 0430; + LastUpgradeCheck = 1120; }; buildConfigurationList = 532B11D1154F362C004B4780 /* Build configuration list for PBXProject "StaticTable" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + compatibilityVersion = "Xcode 11.0"; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); mainGroup = 532B11CC154F362C004B4780; productRefGroup = 532B11D8154F362C004B4780 /* Products */; @@ -259,12 +260,32 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = 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_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", @@ -272,10 +293,14 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; name = Debug; @@ -284,16 +309,38 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = 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_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; + ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; @@ -306,6 +353,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "StaticTable/StaticTable-Prefix.pch"; INFOPLIST_FILE = "StaticTable/StaticTable-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; @@ -317,6 +365,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "StaticTable/StaticTable-Prefix.pch"; INFOPLIST_FILE = "StaticTable/StaticTable-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; diff --git a/Archive/StaticTable/StaticTable.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Archive/StaticTable/StaticTable.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..0502574 --- /dev/null +++ b/Archive/StaticTable/StaticTable.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Archive/StaticTable/StaticTable.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Archive/StaticTable/StaticTable.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Archive/StaticTable/StaticTable.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/StaticTable/StaticTable/Settings.storyboard b/Archive/StaticTable/StaticTable/Settings.storyboard similarity index 70% rename from StaticTable/StaticTable/Settings.storyboard rename to Archive/StaticTable/StaticTable/Settings.storyboard index 9a8474f..bd38de0 100644 --- a/StaticTable/StaticTable/Settings.storyboard +++ b/Archive/StaticTable/StaticTable/Settings.storyboard @@ -1,140 +1,136 @@ - - + + + - - - + + + - + - - - + + - + - - + + - - + + - - - + - + - - + + - - + + - - - + - + - - + + - - + + - - - + - + - - + + - - + + - - - + @@ -154,132 +150,126 @@ + - + - + - - - + + - + - - + + - - - + - + - - + + - - - + - + - - + + - - - + - + - - + + - - - + - + - - + + - - - + - + - - + + - - - + @@ -291,17 +281,17 @@ + - + - - + @@ -309,38 +299,37 @@ + - + - + - - - + + - + - - + + - - - + @@ -350,22 +339,21 @@ - + - - + + - - - + @@ -380,34 +368,9 @@ + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + diff --git a/StaticTable/StaticTable/StaticTable-Info.plist b/Archive/StaticTable/StaticTable/StaticTable-Info.plist similarity index 94% rename from StaticTable/StaticTable/StaticTable-Info.plist rename to Archive/StaticTable/StaticTable/StaticTable-Info.plist index 408dd6d..9989d33 100644 --- a/StaticTable/StaticTable/StaticTable-Info.plist +++ b/Archive/StaticTable/StaticTable/StaticTable-Info.plist @@ -9,7 +9,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.useyourloaf.${PRODUCT_NAME:rfc1034identifier} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/StaticTable/StaticTable/StaticTable-Prefix.pch b/Archive/StaticTable/StaticTable/StaticTable-Prefix.pch similarity index 100% rename from StaticTable/StaticTable/StaticTable-Prefix.pch rename to Archive/StaticTable/StaticTable/StaticTable-Prefix.pch diff --git a/StaticTable/StaticTable/UYLAdvancedSettingsViewController.h b/Archive/StaticTable/StaticTable/UYLAdvancedSettingsViewController.h similarity index 100% rename from StaticTable/StaticTable/UYLAdvancedSettingsViewController.h rename to Archive/StaticTable/StaticTable/UYLAdvancedSettingsViewController.h diff --git a/StaticTable/StaticTable/UYLAdvancedSettingsViewController.m b/Archive/StaticTable/StaticTable/UYLAdvancedSettingsViewController.m similarity index 100% rename from StaticTable/StaticTable/UYLAdvancedSettingsViewController.m rename to Archive/StaticTable/StaticTable/UYLAdvancedSettingsViewController.m diff --git a/StaticTable/StaticTable/UYLAppDelegate.h b/Archive/StaticTable/StaticTable/UYLAppDelegate.h similarity index 100% rename from StaticTable/StaticTable/UYLAppDelegate.h rename to Archive/StaticTable/StaticTable/UYLAppDelegate.h diff --git a/StaticTable/StaticTable/UYLAppDelegate.m b/Archive/StaticTable/StaticTable/UYLAppDelegate.m similarity index 100% rename from StaticTable/StaticTable/UYLAppDelegate.m rename to Archive/StaticTable/StaticTable/UYLAppDelegate.m diff --git a/StaticTable/StaticTable/UYLFirstViewController.h b/Archive/StaticTable/StaticTable/UYLFirstViewController.h similarity index 100% rename from StaticTable/StaticTable/UYLFirstViewController.h rename to Archive/StaticTable/StaticTable/UYLFirstViewController.h diff --git a/StaticTable/StaticTable/UYLFirstViewController.m b/Archive/StaticTable/StaticTable/UYLFirstViewController.m similarity index 100% rename from StaticTable/StaticTable/UYLFirstViewController.m rename to Archive/StaticTable/StaticTable/UYLFirstViewController.m diff --git a/Archive/StaticTable/StaticTable/UYLFirstViewController.xib b/Archive/StaticTable/StaticTable/UYLFirstViewController.xib new file mode 100644 index 0000000..8325205 --- /dev/null +++ b/Archive/StaticTable/StaticTable/UYLFirstViewController.xib @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/StaticTable/StaticTable/UYLGeneralSettingsTableViewController.h b/Archive/StaticTable/StaticTable/UYLGeneralSettingsTableViewController.h similarity index 100% rename from StaticTable/StaticTable/UYLGeneralSettingsTableViewController.h rename to Archive/StaticTable/StaticTable/UYLGeneralSettingsTableViewController.h diff --git a/StaticTable/StaticTable/UYLGeneralSettingsTableViewController.m b/Archive/StaticTable/StaticTable/UYLGeneralSettingsTableViewController.m similarity index 100% rename from StaticTable/StaticTable/UYLGeneralSettingsTableViewController.m rename to Archive/StaticTable/StaticTable/UYLGeneralSettingsTableViewController.m diff --git a/StaticTable/StaticTable/UYLRotatingTableViewController.h b/Archive/StaticTable/StaticTable/UYLRotatingTableViewController.h similarity index 100% rename from StaticTable/StaticTable/UYLRotatingTableViewController.h rename to Archive/StaticTable/StaticTable/UYLRotatingTableViewController.h diff --git a/StaticTable/StaticTable/UYLRotatingTableViewController.m b/Archive/StaticTable/StaticTable/UYLRotatingTableViewController.m similarity index 100% rename from StaticTable/StaticTable/UYLRotatingTableViewController.m rename to Archive/StaticTable/StaticTable/UYLRotatingTableViewController.m diff --git a/MasterSlide/MasterSlide/en.lproj/InfoPlist.strings b/Archive/StaticTable/StaticTable/en.lproj/InfoPlist.strings similarity index 100% rename from MasterSlide/MasterSlide/en.lproj/InfoPlist.strings rename to Archive/StaticTable/StaticTable/en.lproj/InfoPlist.strings diff --git a/Restorer/Restorer/first.png b/Archive/StaticTable/StaticTable/first.png similarity index 100% rename from Restorer/Restorer/first.png rename to Archive/StaticTable/StaticTable/first.png diff --git a/Restorer/Restorer/first@2x.png b/Archive/StaticTable/StaticTable/first@2x.png similarity index 100% rename from Restorer/Restorer/first@2x.png rename to Archive/StaticTable/StaticTable/first@2x.png diff --git a/StaticTable/StaticTable/main.m b/Archive/StaticTable/StaticTable/main.m similarity index 100% rename from StaticTable/StaticTable/main.m rename to Archive/StaticTable/StaticTable/main.m diff --git a/Restorer/Restorer/second.png b/Archive/StaticTable/StaticTable/second.png similarity index 100% rename from Restorer/Restorer/second.png rename to Archive/StaticTable/StaticTable/second.png diff --git a/Restorer/Restorer/second@2x.png b/Archive/StaticTable/StaticTable/second@2x.png similarity index 100% rename from Restorer/Restorer/second@2x.png rename to Archive/StaticTable/StaticTable/second@2x.png diff --git a/Stepper/Stepper.xcodeproj/project.pbxproj b/Archive/Stepper/Stepper.xcodeproj/project.pbxproj similarity index 81% rename from Stepper/Stepper.xcodeproj/project.pbxproj rename to Archive/Stepper/Stepper.xcodeproj/project.pbxproj index 3056532..9e328cf 100644 --- a/Stepper/Stepper.xcodeproj/project.pbxproj +++ b/Archive/Stepper/Stepper.xcodeproj/project.pbxproj @@ -18,6 +18,7 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 5334608F23CA627F00BE943E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/UYLViewController.xib; sourceTree = ""; }; 53CA1FB714B3B08500432C8E /* Stepper.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Stepper.app; sourceTree = BUILT_PRODUCTS_DIR; }; 53CA1FBB14B3B08500432C8E /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 53CA1FBD14B3B08500432C8E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; @@ -30,7 +31,6 @@ 53CA1FCB14B3B08500432C8E /* UYLAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UYLAppDelegate.m; sourceTree = ""; }; 53CA1FCD14B3B08500432C8E /* UYLViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UYLViewController.h; sourceTree = ""; }; 53CA1FCE14B3B08500432C8E /* UYLViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UYLViewController.m; sourceTree = ""; }; - 53CA1FD114B3B08500432C8E /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/UYLViewController.xib; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -124,14 +124,15 @@ 53CA1FAE14B3B08500432C8E /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0430; + LastUpgradeCheck = 1120; }; buildConfigurationList = 53CA1FB114B3B08500432C8E /* Build configuration list for PBXProject "Stepper" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); mainGroup = 53CA1FAC14B3B08500432C8E; productRefGroup = 53CA1FB814B3B08500432C8E /* Products */; @@ -180,7 +181,7 @@ 53CA1FD014B3B08500432C8E /* UYLViewController.xib */ = { isa = PBXVariantGroup; children = ( - 53CA1FD114B3B08500432C8E /* en */, + 5334608F23CA627F00BE943E /* Base */, ); name = UYLViewController.xib; sourceTree = ""; @@ -192,11 +193,31 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", @@ -204,10 +225,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; name = Debug; @@ -216,15 +242,38 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; + ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; @@ -238,6 +287,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "Stepper/Stepper-Prefix.pch"; INFOPLIST_FILE = "Stepper/Stepper-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; @@ -250,6 +300,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "Stepper/Stepper-Prefix.pch"; INFOPLIST_FILE = "Stepper/Stepper-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; diff --git a/Archive/Stepper/Stepper.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Archive/Stepper/Stepper.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/Archive/Stepper/Stepper.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Archive/Stepper/Stepper.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Archive/Stepper/Stepper.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Archive/Stepper/Stepper.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Archive/Stepper/Stepper/Base.lproj/UYLViewController.xib b/Archive/Stepper/Stepper/Base.lproj/UYLViewController.xib new file mode 100644 index 0000000..e957a6e --- /dev/null +++ b/Archive/Stepper/Stepper/Base.lproj/UYLViewController.xib @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Stepper/Stepper/Stepper-Info.plist b/Archive/Stepper/Stepper/Stepper-Info.plist similarity index 94% rename from Stepper/Stepper/Stepper-Info.plist rename to Archive/Stepper/Stepper/Stepper-Info.plist index 82d3103..a5a6331 100644 --- a/Stepper/Stepper/Stepper-Info.plist +++ b/Archive/Stepper/Stepper/Stepper-Info.plist @@ -11,7 +11,7 @@ CFBundleIconFiles CFBundleIdentifier - com.useyourloaf.${PRODUCT_NAME:rfc1034identifier} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/Stepper/Stepper/Stepper-Prefix.pch b/Archive/Stepper/Stepper/Stepper-Prefix.pch similarity index 100% rename from Stepper/Stepper/Stepper-Prefix.pch rename to Archive/Stepper/Stepper/Stepper-Prefix.pch diff --git a/Stepper/Stepper/UYLAppDelegate.h b/Archive/Stepper/Stepper/UYLAppDelegate.h similarity index 100% rename from Stepper/Stepper/UYLAppDelegate.h rename to Archive/Stepper/Stepper/UYLAppDelegate.h diff --git a/Stepper/Stepper/UYLAppDelegate.m b/Archive/Stepper/Stepper/UYLAppDelegate.m similarity index 100% rename from Stepper/Stepper/UYLAppDelegate.m rename to Archive/Stepper/Stepper/UYLAppDelegate.m diff --git a/Stepper/Stepper/UYLViewController.h b/Archive/Stepper/Stepper/UYLViewController.h similarity index 100% rename from Stepper/Stepper/UYLViewController.h rename to Archive/Stepper/Stepper/UYLViewController.h diff --git a/Stepper/Stepper/UYLViewController.m b/Archive/Stepper/Stepper/UYLViewController.m similarity index 100% rename from Stepper/Stepper/UYLViewController.m rename to Archive/Stepper/Stepper/UYLViewController.m diff --git a/StaticTable/StaticTable/en.lproj/InfoPlist.strings b/Archive/Stepper/Stepper/en.lproj/InfoPlist.strings similarity index 100% rename from StaticTable/StaticTable/en.lproj/InfoPlist.strings rename to Archive/Stepper/Stepper/en.lproj/InfoPlist.strings diff --git a/Stepper/Stepper/main.m b/Archive/Stepper/Stepper/main.m similarity index 100% rename from Stepper/Stepper/main.m rename to Archive/Stepper/Stepper/main.m diff --git a/Styles/README b/Archive/Styles/README similarity index 94% rename from Styles/README rename to Archive/Styles/README index 463bf10..029456c 100644 --- a/Styles/README +++ b/Archive/Styles/README @@ -9,7 +9,7 @@ customise the appearance of common UIKit controls. For further details see: -useyourloaf.com/blog/2012/08/24/using-appearance-proxy-to-style-apps.html +useyourloaf.com/blog/using-appearance-proxy-to-style-apps/ ======================================================================= @@ -68,4 +68,4 @@ UYLRotatingViewController.h UYLRotatingViewController.m This is a container class used for all of the UIKit control views. The viewDidLoad method is used to set the view background. It also implements -the standard method to enable interface orientation. \ No newline at end of file +the standard method to enable interface orientation. diff --git a/Styles/Styles.xcodeproj/project.pbxproj b/Archive/Styles/Styles.xcodeproj/project.pbxproj similarity index 88% rename from Styles/Styles.xcodeproj/project.pbxproj rename to Archive/Styles/Styles.xcodeproj/project.pbxproj index 26e39d7..f63390f 100644 --- a/Styles/Styles.xcodeproj/project.pbxproj +++ b/Archive/Styles/Styles.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ @@ -13,6 +13,7 @@ 532F266715BDDF7A00321881 /* UYLRotatingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 532F266615BDDF7A00321881 /* UYLRotatingViewController.m */; }; 532F267915BDE44F00321881 /* UYLResetButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 532F267815BDE44F00321881 /* UYLResetButton.m */; }; 532F267C15BDEAEB00321881 /* UYLStyleController.m in Sources */ = {isa = PBXBuildFile; fileRef = 532F267B15BDEAEB00321881 /* UYLStyleController.m */; }; + 5334608A23CA316E00BE943E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5334608923CA316E00BE943E /* LaunchScreen.storyboard */; }; 535734EA15B75876006F0E6A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 535734E915B75876006F0E6A /* UIKit.framework */; }; 535734EC15B75876006F0E6A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 535734EB15B75876006F0E6A /* Foundation.framework */; }; 535734EE15B75876006F0E6A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 535734ED15B75876006F0E6A /* CoreGraphics.framework */; }; @@ -51,6 +52,8 @@ 532F267815BDE44F00321881 /* UYLResetButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UYLResetButton.m; sourceTree = ""; }; 532F267A15BDEAEA00321881 /* UYLStyleController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UYLStyleController.h; sourceTree = ""; }; 532F267B15BDEAEB00321881 /* UYLStyleController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UYLStyleController.m; sourceTree = ""; }; + 5334608823CA30B700BE943E /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + 5334608923CA316E00BE943E /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; 535734E515B75876006F0E6A /* Styles.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Styles.app; sourceTree = BUILT_PRODUCTS_DIR; }; 535734E915B75876006F0E6A /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 535734EB15B75876006F0E6A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; @@ -101,6 +104,7 @@ 535734DA15B75875006F0E6A = { isa = PBXGroup; children = ( + 5334608823CA30B700BE943E /* README */, 535734EF15B75876006F0E6A /* Styles */, 535734E815B75876006F0E6A /* Frameworks */, 535734E615B75876006F0E6A /* Products */, @@ -145,6 +149,7 @@ 535734F215B75876006F0E6A /* InfoPlist.strings */, 535734F515B75877006F0E6A /* main.m */, 535734F715B75877006F0E6A /* Styles-Prefix.pch */, + 5334608923CA316E00BE943E /* LaunchScreen.storyboard */, ); name = "Supporting Files"; sourceTree = ""; @@ -228,14 +233,15 @@ isa = PBXProject; attributes = { CLASSPREFIX = UYL; - LastUpgradeCheck = 0430; + LastUpgradeCheck = 1120; }; buildConfigurationList = 535734DF15B75875006F0E6A /* Build configuration list for PBXProject "Styles" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + compatibilityVersion = "Xcode 11.0"; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); mainGroup = 535734DA15B75875006F0E6A; productRefGroup = 535734E615B75876006F0E6A /* Products */; @@ -270,6 +276,7 @@ 53AA527915E58E9B000C8D04 /* back-button@2x.png in Resources */, 53AA527C15E591BF000C8D04 /* back-button-landscape.png in Resources */, 53AA527D15E591BF000C8D04 /* back-button-landscape@2x.png in Resources */, + 5334608A23CA316E00BE943E /* LaunchScreen.storyboard in Resources */, 5305B54615E6408500AC81F4 /* divider.png in Resources */, 5305B54715E6408500AC81F4 /* divider@2x.png in Resources */, ); @@ -311,12 +318,32 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = 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_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", @@ -324,10 +351,14 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; name = Debug; @@ -336,16 +367,38 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = 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_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; + ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; @@ -355,9 +408,11 @@ 5357350F15B75878006F0E6A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + DEVELOPMENT_TEAM = LCC2J94N44; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "Styles/Styles-Prefix.pch"; INFOPLIST_FILE = "Styles/Styles-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; @@ -366,9 +421,11 @@ 5357351015B75878006F0E6A /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + DEVELOPMENT_TEAM = LCC2J94N44; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "Styles/Styles-Prefix.pch"; INFOPLIST_FILE = "Styles/Styles-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; diff --git a/Archive/Styles/Styles.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Archive/Styles/Styles.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..a339ef4 --- /dev/null +++ b/Archive/Styles/Styles.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Archive/Styles/Styles.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Archive/Styles/Styles.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Archive/Styles/Styles.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Archive/Styles/Styles/LaunchScreen.storyboard b/Archive/Styles/Styles/LaunchScreen.storyboard new file mode 100644 index 0000000..06d6044 --- /dev/null +++ b/Archive/Styles/Styles/LaunchScreen.storyboard @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Styles/Styles/MainStoryboard.storyboard b/Archive/Styles/Styles/MainStoryboard.storyboard similarity index 66% rename from Styles/Styles/MainStoryboard.storyboard rename to Archive/Styles/Styles/MainStoryboard.storyboard index 494f317..e0db02c 100644 --- a/Styles/Styles/MainStoryboard.storyboard +++ b/Archive/Styles/Styles/MainStoryboard.storyboard @@ -1,123 +1,119 @@ - - + + + - - + + + - + - - - + + - + - - + + - - + - + - - + + - - + - + - - + + - - + - + - - + + - - + - + - - + + - - + @@ -132,45 +128,49 @@ + - + - + - + + + + - + - - + + - - + + - + - + - + + + + - + - - - - - - - - - - - - - + + - + - + - - + @@ -374,23 +366,27 @@ + - + - + - + + + + - + - - + + - - + + - + - + - + + + + - + - - + + @@ -423,79 +423,62 @@ - + + - + - + - + + + + - + - - + + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + diff --git a/Styles/Styles/Resources/back-button-landscape.png b/Archive/Styles/Styles/Resources/back-button-landscape.png similarity index 100% rename from Styles/Styles/Resources/back-button-landscape.png rename to Archive/Styles/Styles/Resources/back-button-landscape.png diff --git a/Styles/Styles/Resources/back-button-landscape@2x.png b/Archive/Styles/Styles/Resources/back-button-landscape@2x.png similarity index 100% rename from Styles/Styles/Resources/back-button-landscape@2x.png rename to Archive/Styles/Styles/Resources/back-button-landscape@2x.png diff --git a/Styles/Styles/Resources/back-button.png b/Archive/Styles/Styles/Resources/back-button.png similarity index 100% rename from Styles/Styles/Resources/back-button.png rename to Archive/Styles/Styles/Resources/back-button.png diff --git a/Styles/Styles/Resources/back-button@2x.png b/Archive/Styles/Styles/Resources/back-button@2x.png similarity index 100% rename from Styles/Styles/Resources/back-button@2x.png rename to Archive/Styles/Styles/Resources/back-button@2x.png diff --git a/Styles/Styles/Resources/divider.png b/Archive/Styles/Styles/Resources/divider.png similarity index 100% rename from Styles/Styles/Resources/divider.png rename to Archive/Styles/Styles/Resources/divider.png diff --git a/Styles/Styles/Resources/divider@2x.png b/Archive/Styles/Styles/Resources/divider@2x.png similarity index 100% rename from Styles/Styles/Resources/divider@2x.png rename to Archive/Styles/Styles/Resources/divider@2x.png diff --git a/Styles/Styles/Resources/green-button.png b/Archive/Styles/Styles/Resources/green-button.png similarity index 100% rename from Styles/Styles/Resources/green-button.png rename to Archive/Styles/Styles/Resources/green-button.png diff --git a/Styles/Styles/Resources/green-button@2x.png b/Archive/Styles/Styles/Resources/green-button@2x.png similarity index 100% rename from Styles/Styles/Resources/green-button@2x.png rename to Archive/Styles/Styles/Resources/green-button@2x.png diff --git a/Styles/Styles/Resources/navbar-landscape.png b/Archive/Styles/Styles/Resources/navbar-landscape.png similarity index 100% rename from Styles/Styles/Resources/navbar-landscape.png rename to Archive/Styles/Styles/Resources/navbar-landscape.png diff --git a/Styles/Styles/Resources/navbar-landscape@2x.png b/Archive/Styles/Styles/Resources/navbar-landscape@2x.png similarity index 100% rename from Styles/Styles/Resources/navbar-landscape@2x.png rename to Archive/Styles/Styles/Resources/navbar-landscape@2x.png diff --git a/Styles/Styles/Resources/navbar.png b/Archive/Styles/Styles/Resources/navbar.png similarity index 100% rename from Styles/Styles/Resources/navbar.png rename to Archive/Styles/Styles/Resources/navbar.png diff --git a/Styles/Styles/Resources/navbar@2x.png b/Archive/Styles/Styles/Resources/navbar@2x.png similarity index 100% rename from Styles/Styles/Resources/navbar@2x.png rename to Archive/Styles/Styles/Resources/navbar@2x.png diff --git a/Styles/Styles/Resources/orange-button.png b/Archive/Styles/Styles/Resources/orange-button.png similarity index 100% rename from Styles/Styles/Resources/orange-button.png rename to Archive/Styles/Styles/Resources/orange-button.png diff --git a/Styles/Styles/Resources/orange-button@2x.png b/Archive/Styles/Styles/Resources/orange-button@2x.png similarity index 100% rename from Styles/Styles/Resources/orange-button@2x.png rename to Archive/Styles/Styles/Resources/orange-button@2x.png diff --git a/Styles/Styles/Resources/orange.png b/Archive/Styles/Styles/Resources/orange.png similarity index 100% rename from Styles/Styles/Resources/orange.png rename to Archive/Styles/Styles/Resources/orange.png diff --git a/Styles/Styles/Resources/orange@2x.png b/Archive/Styles/Styles/Resources/orange@2x.png similarity index 100% rename from Styles/Styles/Resources/orange@2x.png rename to Archive/Styles/Styles/Resources/orange@2x.png diff --git a/Styles/Styles/Resources/red-button.png b/Archive/Styles/Styles/Resources/red-button.png similarity index 100% rename from Styles/Styles/Resources/red-button.png rename to Archive/Styles/Styles/Resources/red-button.png diff --git a/Styles/Styles/Resources/red-button@2x.png b/Archive/Styles/Styles/Resources/red-button@2x.png similarity index 100% rename from Styles/Styles/Resources/red-button@2x.png rename to Archive/Styles/Styles/Resources/red-button@2x.png diff --git a/Styles/Styles/Resources/steel-button.png b/Archive/Styles/Styles/Resources/steel-button.png similarity index 100% rename from Styles/Styles/Resources/steel-button.png rename to Archive/Styles/Styles/Resources/steel-button.png diff --git a/Styles/Styles/Resources/steel-button@2x.png b/Archive/Styles/Styles/Resources/steel-button@2x.png similarity index 100% rename from Styles/Styles/Resources/steel-button@2x.png rename to Archive/Styles/Styles/Resources/steel-button@2x.png diff --git a/Styles/Styles/Styles-Info.plist b/Archive/Styles/Styles/Styles-Info.plist similarity index 91% rename from Styles/Styles/Styles-Info.plist rename to Archive/Styles/Styles/Styles-Info.plist index faa11bb..66a4d0c 100644 --- a/Styles/Styles/Styles-Info.plist +++ b/Archive/Styles/Styles/Styles-Info.plist @@ -9,7 +9,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.useyourloaf.${PRODUCT_NAME:rfc1034identifier} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName @@ -24,6 +24,8 @@ 1.0 LSRequiresIPhoneOS + UILaunchStoryboardName + LaunchScreen UIMainStoryboardFile MainStoryboard UIRequiredDeviceCapabilities diff --git a/Styles/Styles/Styles-Prefix.pch b/Archive/Styles/Styles/Styles-Prefix.pch similarity index 100% rename from Styles/Styles/Styles-Prefix.pch rename to Archive/Styles/Styles/Styles-Prefix.pch diff --git a/Styles/Styles/UYLAppDelegate.h b/Archive/Styles/Styles/UYLAppDelegate.h similarity index 100% rename from Styles/Styles/UYLAppDelegate.h rename to Archive/Styles/Styles/UYLAppDelegate.h diff --git a/Styles/Styles/UYLAppDelegate.m b/Archive/Styles/Styles/UYLAppDelegate.m similarity index 100% rename from Styles/Styles/UYLAppDelegate.m rename to Archive/Styles/Styles/UYLAppDelegate.m diff --git a/Styles/Styles/UYLListViewController.h b/Archive/Styles/Styles/UYLListViewController.h similarity index 100% rename from Styles/Styles/UYLListViewController.h rename to Archive/Styles/Styles/UYLListViewController.h diff --git a/Styles/Styles/UYLListViewController.m b/Archive/Styles/Styles/UYLListViewController.m similarity index 93% rename from Styles/Styles/UYLListViewController.m rename to Archive/Styles/Styles/UYLListViewController.m index eddda08..ca15048 100644 --- a/Styles/Styles/UYLListViewController.m +++ b/Archive/Styles/Styles/UYLListViewController.m @@ -37,9 +37,9 @@ @interface UYLListViewController () @implementation UYLListViewController -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return YES; -} +//- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation +//{ +// return YES; +//} @end diff --git a/Styles/Styles/UYLOkButton.h b/Archive/Styles/Styles/UYLOkButton.h similarity index 100% rename from Styles/Styles/UYLOkButton.h rename to Archive/Styles/Styles/UYLOkButton.h diff --git a/Styles/Styles/UYLOkButton.m b/Archive/Styles/Styles/UYLOkButton.m similarity index 100% rename from Styles/Styles/UYLOkButton.m rename to Archive/Styles/Styles/UYLOkButton.m diff --git a/Styles/Styles/UYLResetButton.h b/Archive/Styles/Styles/UYLResetButton.h similarity index 100% rename from Styles/Styles/UYLResetButton.h rename to Archive/Styles/Styles/UYLResetButton.h diff --git a/Styles/Styles/UYLResetButton.m b/Archive/Styles/Styles/UYLResetButton.m similarity index 100% rename from Styles/Styles/UYLResetButton.m rename to Archive/Styles/Styles/UYLResetButton.m diff --git a/Styles/Styles/UYLRotatingViewController.h b/Archive/Styles/Styles/UYLRotatingViewController.h similarity index 100% rename from Styles/Styles/UYLRotatingViewController.h rename to Archive/Styles/Styles/UYLRotatingViewController.h diff --git a/Styles/Styles/UYLRotatingViewController.m b/Archive/Styles/Styles/UYLRotatingViewController.m similarity index 93% rename from Styles/Styles/UYLRotatingViewController.m rename to Archive/Styles/Styles/UYLRotatingViewController.m index 7333012..243d96f 100644 --- a/Styles/Styles/UYLRotatingViewController.m +++ b/Archive/Styles/Styles/UYLRotatingViewController.m @@ -41,9 +41,9 @@ - (void) viewDidLoad self.view.backgroundColor = [UIColor lightGrayColor]; } -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return YES; -} +//- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation +//{ +// return YES; +//} @end diff --git a/Styles/Styles/UYLStyleController.h b/Archive/Styles/Styles/UYLStyleController.h similarity index 100% rename from Styles/Styles/UYLStyleController.h rename to Archive/Styles/Styles/UYLStyleController.h diff --git a/Styles/Styles/UYLStyleController.m b/Archive/Styles/Styles/UYLStyleController.m similarity index 98% rename from Styles/Styles/UYLStyleController.m rename to Archive/Styles/Styles/UYLStyleController.m index b12ad10..7310ba7 100644 --- a/Styles/Styles/UYLStyleController.m +++ b/Archive/Styles/Styles/UYLStyleController.m @@ -52,7 +52,7 @@ + (void)applyStyle [navigationBarAppearance setBackgroundImage:navBarImage forBarMetrics:UIBarMetricsDefault]; [navigationBarAppearance setBackgroundImage:navBarLandscapeImage forBarMetrics:UIBarMetricsLandscapePhone]; - NSDictionary *textAttributes = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor grayColor], UITextAttributeTextColor, nil]; + NSDictionary *textAttributes = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor grayColor], NSForegroundColorAttributeName, nil]; [navigationBarAppearance setTitleTextAttributes:textAttributes]; UIImage *backButtonImage = [UIImage imageNamed:@"back-button"]; diff --git a/Styles/Styles/UYLZeroButton.h b/Archive/Styles/Styles/UYLZeroButton.h similarity index 100% rename from Styles/Styles/UYLZeroButton.h rename to Archive/Styles/Styles/UYLZeroButton.h diff --git a/Styles/Styles/UYLZeroButton.m b/Archive/Styles/Styles/UYLZeroButton.m similarity index 100% rename from Styles/Styles/UYLZeroButton.m rename to Archive/Styles/Styles/UYLZeroButton.m diff --git a/Stepper/Stepper/en.lproj/InfoPlist.strings b/Archive/Styles/Styles/en.lproj/InfoPlist.strings similarity index 100% rename from Stepper/Stepper/en.lproj/InfoPlist.strings rename to Archive/Styles/Styles/en.lproj/InfoPlist.strings diff --git a/Styles/Styles/main.m b/Archive/Styles/Styles/main.m similarity index 100% rename from Styles/Styles/main.m rename to Archive/Styles/Styles/main.m diff --git a/SyncMe/SyncMe.xcodeproj/project.pbxproj b/Archive/SyncMe/SyncMe.xcodeproj/project.pbxproj similarity index 80% rename from SyncMe/SyncMe.xcodeproj/project.pbxproj rename to Archive/SyncMe/SyncMe.xcodeproj/project.pbxproj index b823bf1..df3f587 100644 --- a/SyncMe/SyncMe.xcodeproj/project.pbxproj +++ b/Archive/SyncMe/SyncMe.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ @@ -18,6 +18,7 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 5334609523CA6B2500BE943E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/UYLViewController.xib; sourceTree = ""; }; 53DA6A481454A1C300368AB3 /* SyncMe.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SyncMe.app; sourceTree = BUILT_PRODUCTS_DIR; }; 53DA6A4C1454A1C300368AB3 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 53DA6A4E1454A1C300368AB3 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; @@ -30,7 +31,6 @@ 53DA6A5C1454A1C300368AB3 /* UYLAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UYLAppDelegate.m; sourceTree = ""; }; 53DA6A5E1454A1C300368AB3 /* UYLViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UYLViewController.h; sourceTree = ""; }; 53DA6A5F1454A1C400368AB3 /* UYLViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UYLViewController.m; sourceTree = ""; }; - 53DA6A621454A1C400368AB3 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/UYLViewController.xib; sourceTree = ""; }; 53DA6A771454B39300368AB3 /* SyncMe.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = SyncMe.entitlements; sourceTree = ""; }; /* End PBXFileReference section */ @@ -126,14 +126,15 @@ 53DA6A3F1454A1C300368AB3 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0420; + LastUpgradeCheck = 1120; }; buildConfigurationList = 53DA6A421454A1C300368AB3 /* Build configuration list for PBXProject "SyncMe" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + compatibilityVersion = "Xcode 11.0"; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); mainGroup = 53DA6A3D1454A1C300368AB3; productRefGroup = 53DA6A491454A1C300368AB3 /* Products */; @@ -182,7 +183,7 @@ 53DA6A611454A1C400368AB3 /* UYLViewController.xib */ = { isa = PBXVariantGroup; children = ( - 53DA6A621454A1C400368AB3 /* en */, + 5334609523CA6B2500BE943E /* Base */, ); name = UYLViewController.xib; sourceTree = ""; @@ -194,11 +195,31 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", @@ -206,10 +227,15 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 4.1; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; name = Debug; @@ -218,15 +244,38 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; COPY_PHASE_STRIP = YES; + ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 4.1; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; @@ -236,10 +285,12 @@ 53DA6A671454A1C400368AB3 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_ENTITLEMENTS = SyncMe/SyncMe.entitlements; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "SyncMe/SyncMe-Prefix.pch"; INFOPLIST_FILE = "SyncMe/SyncMe-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; @@ -248,10 +299,12 @@ 53DA6A681454A1C400368AB3 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_ENTITLEMENTS = SyncMe/SyncMe.entitlements; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "SyncMe/SyncMe-Prefix.pch"; INFOPLIST_FILE = "SyncMe/SyncMe-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; diff --git a/Archive/SyncMe/SyncMe.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Archive/SyncMe/SyncMe.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..8ac9b61 --- /dev/null +++ b/Archive/SyncMe/SyncMe.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Archive/SyncMe/SyncMe.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Archive/SyncMe/SyncMe.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Archive/SyncMe/SyncMe.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/SyncMe/SyncMe/en.lproj/UYLViewController.xib b/Archive/SyncMe/SyncMe/Base.lproj/UYLViewController.xib similarity index 100% rename from SyncMe/SyncMe/en.lproj/UYLViewController.xib rename to Archive/SyncMe/SyncMe/Base.lproj/UYLViewController.xib diff --git a/SyncMe/SyncMe/SyncMe-Info.plist b/Archive/SyncMe/SyncMe/SyncMe-Info.plist similarity index 94% rename from SyncMe/SyncMe/SyncMe-Info.plist rename to Archive/SyncMe/SyncMe/SyncMe-Info.plist index f5d7a12..5da589d 100644 --- a/SyncMe/SyncMe/SyncMe-Info.plist +++ b/Archive/SyncMe/SyncMe/SyncMe-Info.plist @@ -11,7 +11,7 @@ CFBundleIconFiles CFBundleIdentifier - com.useyourloaf.${PRODUCT_NAME:rfc1034identifier} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/SyncMe/SyncMe/SyncMe-Prefix.pch b/Archive/SyncMe/SyncMe/SyncMe-Prefix.pch similarity index 100% rename from SyncMe/SyncMe/SyncMe-Prefix.pch rename to Archive/SyncMe/SyncMe/SyncMe-Prefix.pch diff --git a/SyncMe/SyncMe/SyncMe.entitlements b/Archive/SyncMe/SyncMe/SyncMe.entitlements similarity index 100% rename from SyncMe/SyncMe/SyncMe.entitlements rename to Archive/SyncMe/SyncMe/SyncMe.entitlements diff --git a/SyncMe/SyncMe/UYLAppDelegate.h b/Archive/SyncMe/SyncMe/UYLAppDelegate.h similarity index 100% rename from SyncMe/SyncMe/UYLAppDelegate.h rename to Archive/SyncMe/SyncMe/UYLAppDelegate.h diff --git a/SyncMe/SyncMe/UYLAppDelegate.m b/Archive/SyncMe/SyncMe/UYLAppDelegate.m similarity index 100% rename from SyncMe/SyncMe/UYLAppDelegate.m rename to Archive/SyncMe/SyncMe/UYLAppDelegate.m diff --git a/SyncMe/SyncMe/UYLViewController.h b/Archive/SyncMe/SyncMe/UYLViewController.h similarity index 100% rename from SyncMe/SyncMe/UYLViewController.h rename to Archive/SyncMe/SyncMe/UYLViewController.h diff --git a/SyncMe/SyncMe/UYLViewController.m b/Archive/SyncMe/SyncMe/UYLViewController.m similarity index 100% rename from SyncMe/SyncMe/UYLViewController.m rename to Archive/SyncMe/SyncMe/UYLViewController.m diff --git a/Styles/Styles/en.lproj/InfoPlist.strings b/Archive/SyncMe/SyncMe/en.lproj/InfoPlist.strings similarity index 100% rename from Styles/Styles/en.lproj/InfoPlist.strings rename to Archive/SyncMe/SyncMe/en.lproj/InfoPlist.strings diff --git a/SyncMe/SyncMe/main.m b/Archive/SyncMe/SyncMe/main.m similarity index 100% rename from SyncMe/SyncMe/main.m rename to Archive/SyncMe/SyncMe/main.m diff --git a/TCNibLoad/Classes/NewViewController.h b/Archive/TCNibLoad/Classes/NewViewController.h similarity index 100% rename from TCNibLoad/Classes/NewViewController.h rename to Archive/TCNibLoad/Classes/NewViewController.h diff --git a/TCNibLoad/Classes/NewViewController.m b/Archive/TCNibLoad/Classes/NewViewController.m similarity index 100% rename from TCNibLoad/Classes/NewViewController.m rename to Archive/TCNibLoad/Classes/NewViewController.m diff --git a/TCNibLoad/Classes/OldViewController.h b/Archive/TCNibLoad/Classes/OldViewController.h similarity index 100% rename from TCNibLoad/Classes/OldViewController.h rename to Archive/TCNibLoad/Classes/OldViewController.h diff --git a/TCNibLoad/Classes/OldViewController.m b/Archive/TCNibLoad/Classes/OldViewController.m similarity index 100% rename from TCNibLoad/Classes/OldViewController.m rename to Archive/TCNibLoad/Classes/OldViewController.m diff --git a/Archive/TCNibLoad/Classes/OldViewController.xib b/Archive/TCNibLoad/Classes/OldViewController.xib new file mode 100644 index 0000000..331aaf2 --- /dev/null +++ b/Archive/TCNibLoad/Classes/OldViewController.xib @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TCNibLoad/Classes/TCNibLoadAppDelegate.h b/Archive/TCNibLoad/Classes/TCNibLoadAppDelegate.h similarity index 100% rename from TCNibLoad/Classes/TCNibLoadAppDelegate.h rename to Archive/TCNibLoad/Classes/TCNibLoadAppDelegate.h diff --git a/TCNibLoad/Classes/TCNibLoadAppDelegate.m b/Archive/TCNibLoad/Classes/TCNibLoadAppDelegate.m similarity index 100% rename from TCNibLoad/Classes/TCNibLoadAppDelegate.m rename to Archive/TCNibLoad/Classes/TCNibLoadAppDelegate.m diff --git a/Archive/TCNibLoad/LabelCell.xib b/Archive/TCNibLoad/LabelCell.xib new file mode 100644 index 0000000..3b87b28 --- /dev/null +++ b/Archive/TCNibLoad/LabelCell.xib @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Archive/TCNibLoad/MainWindow.xib b/Archive/TCNibLoad/MainWindow.xib new file mode 100644 index 0000000..36be6bd --- /dev/null +++ b/Archive/TCNibLoad/MainWindow.xib @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TCNibLoad/TCNibLoad-Info.plist b/Archive/TCNibLoad/TCNibLoad-Info.plist similarity index 92% rename from TCNibLoad/TCNibLoad-Info.plist rename to Archive/TCNibLoad/TCNibLoad-Info.plist index 3289444..276e6f6 100644 --- a/TCNibLoad/TCNibLoad-Info.plist +++ b/Archive/TCNibLoad/TCNibLoad-Info.plist @@ -11,7 +11,7 @@ CFBundleIconFile CFBundleIdentifier - com.yourcompany.${PRODUCT_NAME:rfc1034identifier} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/TCNibLoad/TCNibLoad.xcodeproj/project.pbxproj b/Archive/TCNibLoad/TCNibLoad.xcodeproj/project.pbxproj similarity index 80% rename from TCNibLoad/TCNibLoad.xcodeproj/project.pbxproj rename to Archive/TCNibLoad/TCNibLoad.xcodeproj/project.pbxproj index e814942..f00f8fe 100644 --- a/TCNibLoad/TCNibLoad.xcodeproj/project.pbxproj +++ b/Archive/TCNibLoad/TCNibLoad.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 45; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ @@ -140,15 +140,16 @@ /* Begin PBXProject section */ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; + attributes = { + LastUpgradeCheck = 1120; + }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "TCNibLoad" */; - compatibilityVersion = "Xcode 3.1"; - developmentRegion = English; + compatibilityVersion = "Xcode 11.0"; + developmentRegion = en; hasScannedForEncodings = 1; knownRegions = ( - English, - Japanese, - French, - German, + Base, + en, ); mainGroup = 29B97314FDCFA39411CA2CEA /* TCNibLoad */; projectDirPath = ""; @@ -191,16 +192,22 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Don't Code Sign"; + CLANG_ENABLE_OBJC_WEAK = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; + DEVELOPMENT_TEAM = LCC2J94N44; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = TCNibLoad_Prefix.pch; INFOPLIST_FILE = "TCNibLoad-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 3.1.3; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.TCNibLoad; PRODUCT_NAME = TCNibLoad; "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; + PROVISIONING_PROFILE_SPECIFIER = ""; }; name = Debug; }; @@ -208,14 +215,20 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Don't Code Sign"; + CLANG_ENABLE_OBJC_WEAK = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = YES; + DEVELOPMENT_TEAM = LCC2J94N44; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = TCNibLoad_Prefix.pch; INFOPLIST_FILE = "TCNibLoad-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 3.1.3; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.TCNibLoad; PRODUCT_NAME = TCNibLoad; "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; + PROVISIONING_PROFILE_SPECIFIER = ""; VALIDATE_PRODUCT = YES; }; name = Release; @@ -223,12 +236,36 @@ C01FCF4F08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = c99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; + ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; name = Debug; @@ -236,13 +273,35 @@ C01FCF5008A954540054247B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = c99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; - PREBINDING = NO; SDKROOT = iphoneos; }; name = Release; diff --git a/Archive/TCNibLoad/TCNibLoad.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Archive/TCNibLoad/TCNibLoad.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..edc712f --- /dev/null +++ b/Archive/TCNibLoad/TCNibLoad.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Archive/TCNibLoad/TCNibLoad.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Archive/TCNibLoad/TCNibLoad.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Archive/TCNibLoad/TCNibLoad.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/TCNibLoad/TCNibLoad_Prefix.pch b/Archive/TCNibLoad/TCNibLoad_Prefix.pch similarity index 100% rename from TCNibLoad/TCNibLoad_Prefix.pch rename to Archive/TCNibLoad/TCNibLoad_Prefix.pch diff --git a/TCNibLoad/main.m b/Archive/TCNibLoad/main.m similarity index 100% rename from TCNibLoad/main.m rename to Archive/TCNibLoad/main.m diff --git a/TaskTimer/README b/Archive/TaskTimer/README similarity index 95% rename from TaskTimer/README rename to Archive/TaskTimer/README index fd14c10..949762d 100644 --- a/TaskTimer/README +++ b/Archive/TaskTimer/README @@ -13,8 +13,8 @@ perform a list of tasks. For further details see: -http://useyourloaf.com/blog/2012/4/23/voiceover-accessibility.html -http://useyourloaf.com/blog/2012/5/14/detecting-voiceover-status-changes.html +https://useyourloaf.com/blog/voiceover-accessibility/ +https://useyourloaf.com/blog/detecting-voiceover-status-changes/ ======================================================================= Model diff --git a/TaskTimer/TaskTimer.xcodeproj/project.pbxproj b/Archive/TaskTimer/TaskTimer.xcodeproj/project.pbxproj similarity index 87% rename from TaskTimer/TaskTimer.xcodeproj/project.pbxproj rename to Archive/TaskTimer/TaskTimer.xcodeproj/project.pbxproj index b1fb648..c30bd55 100644 --- a/TaskTimer/TaskTimer.xcodeproj/project.pbxproj +++ b/Archive/TaskTimer/TaskTimer.xcodeproj/project.pbxproj @@ -44,10 +44,10 @@ 532DD95F1530C90300ED5845 /* UYLTaskViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UYLTaskViewController.m; sourceTree = ""; }; 532DD96A1530C9AD00ED5845 /* UYLAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UYLAppDelegate.h; sourceTree = ""; }; 532DD96B1530C9AD00ED5845 /* UYLAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UYLAppDelegate.m; sourceTree = ""; }; - 532DD96E1530CA6400ED5845 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/UYLTaskListViewController_iPad.xib; sourceTree = ""; }; - 532DD9701530CA6400ED5845 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/UYLTaskListViewController_iPhone.xib; sourceTree = ""; }; - 532DD9721530CA6400ED5845 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/UYLTaskViewController_iPad.xib; sourceTree = ""; }; - 532DD9741530CA6400ED5845 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/UYLTaskViewController_iPhone.xib; sourceTree = ""; }; + 5334608B23CA3B5E00BE943E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/UYLTaskListViewController_iPad.xib; sourceTree = ""; }; + 5334608C23CA3B5E00BE943E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/UYLTaskListViewController_iPhone.xib; sourceTree = ""; }; + 5334608D23CA3B5E00BE943E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/UYLTaskViewController_iPad.xib; sourceTree = ""; }; + 5334608E23CA3B5E00BE943E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/UYLTaskViewController_iPhone.xib; sourceTree = ""; }; 534644A4155F083D00B20849 /* redbutton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = redbutton.png; sourceTree = ""; }; 536270F1152E0A55009732E1 /* TaskTimer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TaskTimer.app; sourceTree = BUILT_PRODUCTS_DIR; }; 536270F5152E0A55009732E1 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; @@ -230,14 +230,15 @@ isa = PBXProject; attributes = { CLASSPREFIX = UYL; - LastUpgradeCheck = 0430; + LastUpgradeCheck = 1120; }; buildConfigurationList = 536270EB152E0A55009732E1 /* Build configuration list for PBXProject "TaskTimer" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); mainGroup = 536270E6152E0A55009732E1; productRefGroup = 536270F2152E0A55009732E1 /* Products */; @@ -295,7 +296,7 @@ 532DD96D1530CA6400ED5845 /* UYLTaskListViewController_iPad.xib */ = { isa = PBXVariantGroup; children = ( - 532DD96E1530CA6400ED5845 /* en */, + 5334608B23CA3B5E00BE943E /* Base */, ); name = UYLTaskListViewController_iPad.xib; sourceTree = ""; @@ -303,7 +304,7 @@ 532DD96F1530CA6400ED5845 /* UYLTaskListViewController_iPhone.xib */ = { isa = PBXVariantGroup; children = ( - 532DD9701530CA6400ED5845 /* en */, + 5334608C23CA3B5E00BE943E /* Base */, ); name = UYLTaskListViewController_iPhone.xib; sourceTree = ""; @@ -311,7 +312,7 @@ 532DD9711530CA6400ED5845 /* UYLTaskViewController_iPad.xib */ = { isa = PBXVariantGroup; children = ( - 532DD9721530CA6400ED5845 /* en */, + 5334608D23CA3B5E00BE943E /* Base */, ); name = UYLTaskViewController_iPad.xib; sourceTree = ""; @@ -319,7 +320,7 @@ 532DD9731530CA6400ED5845 /* UYLTaskViewController_iPhone.xib */ = { isa = PBXVariantGroup; children = ( - 532DD9741530CA6400ED5845 /* en */, + 5334608E23CA3B5E00BE943E /* Base */, ); name = UYLTaskViewController_iPhone.xib; sourceTree = ""; @@ -339,12 +340,32 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = 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_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", @@ -352,10 +373,14 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -365,16 +390,38 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = 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_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; + ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; @@ -388,6 +435,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "TaskTimer/TaskTimer-Prefix.pch"; INFOPLIST_FILE = "TaskTimer/TaskTimer-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; @@ -399,6 +447,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "TaskTimer/TaskTimer-Prefix.pch"; INFOPLIST_FILE = "TaskTimer/TaskTimer-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; diff --git a/Archive/TaskTimer/TaskTimer.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Archive/TaskTimer/TaskTimer.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..ef00988 --- /dev/null +++ b/Archive/TaskTimer/TaskTimer.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Archive/TaskTimer/TaskTimer.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Archive/TaskTimer/TaskTimer.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Archive/TaskTimer/TaskTimer.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Archive/TaskTimer/TaskTimer/Base.lproj/UYLTaskListViewController_iPad.xib b/Archive/TaskTimer/TaskTimer/Base.lproj/UYLTaskListViewController_iPad.xib new file mode 100644 index 0000000..f37ea5e --- /dev/null +++ b/Archive/TaskTimer/TaskTimer/Base.lproj/UYLTaskListViewController_iPad.xib @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Archive/TaskTimer/TaskTimer/Base.lproj/UYLTaskListViewController_iPhone.xib b/Archive/TaskTimer/TaskTimer/Base.lproj/UYLTaskListViewController_iPhone.xib new file mode 100644 index 0000000..477fd87 --- /dev/null +++ b/Archive/TaskTimer/TaskTimer/Base.lproj/UYLTaskListViewController_iPhone.xib @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Archive/TaskTimer/TaskTimer/Base.lproj/UYLTaskViewController_iPad.xib b/Archive/TaskTimer/TaskTimer/Base.lproj/UYLTaskViewController_iPad.xib new file mode 100644 index 0000000..1fd7bab --- /dev/null +++ b/Archive/TaskTimer/TaskTimer/Base.lproj/UYLTaskViewController_iPad.xib @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Archive/TaskTimer/TaskTimer/Base.lproj/UYLTaskViewController_iPhone.xib b/Archive/TaskTimer/TaskTimer/Base.lproj/UYLTaskViewController_iPhone.xib new file mode 100644 index 0000000..328cc4f --- /dev/null +++ b/Archive/TaskTimer/TaskTimer/Base.lproj/UYLTaskViewController_iPhone.xib @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TaskTimer/TaskTimer/NSNumber+UYLTimeFormatter.h b/Archive/TaskTimer/TaskTimer/NSNumber+UYLTimeFormatter.h similarity index 100% rename from TaskTimer/TaskTimer/NSNumber+UYLTimeFormatter.h rename to Archive/TaskTimer/TaskTimer/NSNumber+UYLTimeFormatter.h diff --git a/TaskTimer/TaskTimer/NSNumber+UYLTimeFormatter.m b/Archive/TaskTimer/TaskTimer/NSNumber+UYLTimeFormatter.m similarity index 100% rename from TaskTimer/TaskTimer/NSNumber+UYLTimeFormatter.m rename to Archive/TaskTimer/TaskTimer/NSNumber+UYLTimeFormatter.m diff --git a/TaskTimer/TaskTimer/Task.h b/Archive/TaskTimer/TaskTimer/Task.h similarity index 100% rename from TaskTimer/TaskTimer/Task.h rename to Archive/TaskTimer/TaskTimer/Task.h diff --git a/TaskTimer/TaskTimer/Task.m b/Archive/TaskTimer/TaskTimer/Task.m similarity index 100% rename from TaskTimer/TaskTimer/Task.m rename to Archive/TaskTimer/TaskTimer/Task.m diff --git a/TaskTimer/TaskTimer/TaskTimer-Info.plist b/Archive/TaskTimer/TaskTimer/TaskTimer-Info.plist similarity index 95% rename from TaskTimer/TaskTimer/TaskTimer-Info.plist rename to Archive/TaskTimer/TaskTimer/TaskTimer-Info.plist index 3c50c87..363537d 100644 --- a/TaskTimer/TaskTimer/TaskTimer-Info.plist +++ b/Archive/TaskTimer/TaskTimer/TaskTimer-Info.plist @@ -9,7 +9,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.useyourloaf.${PRODUCT_NAME:rfc1034identifier} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/TaskTimer/TaskTimer/TaskTimer-Prefix.pch b/Archive/TaskTimer/TaskTimer/TaskTimer-Prefix.pch similarity index 100% rename from TaskTimer/TaskTimer/TaskTimer-Prefix.pch rename to Archive/TaskTimer/TaskTimer/TaskTimer-Prefix.pch diff --git a/TaskTimer/TaskTimer/TaskTimer.xcdatamodeld/.xccurrentversion b/Archive/TaskTimer/TaskTimer/TaskTimer.xcdatamodeld/.xccurrentversion similarity index 100% rename from TaskTimer/TaskTimer/TaskTimer.xcdatamodeld/.xccurrentversion rename to Archive/TaskTimer/TaskTimer/TaskTimer.xcdatamodeld/.xccurrentversion diff --git a/TaskTimer/TaskTimer/TaskTimer.xcdatamodeld/Accessibile.xcdatamodel/contents b/Archive/TaskTimer/TaskTimer/TaskTimer.xcdatamodeld/Accessibile.xcdatamodel/contents similarity index 100% rename from TaskTimer/TaskTimer/TaskTimer.xcdatamodeld/Accessibile.xcdatamodel/contents rename to Archive/TaskTimer/TaskTimer/TaskTimer.xcdatamodeld/Accessibile.xcdatamodel/contents diff --git a/TaskTimer/TaskTimer/UYLAppDelegate.h b/Archive/TaskTimer/TaskTimer/UYLAppDelegate.h similarity index 100% rename from TaskTimer/TaskTimer/UYLAppDelegate.h rename to Archive/TaskTimer/TaskTimer/UYLAppDelegate.h diff --git a/TaskTimer/TaskTimer/UYLAppDelegate.m b/Archive/TaskTimer/TaskTimer/UYLAppDelegate.m similarity index 100% rename from TaskTimer/TaskTimer/UYLAppDelegate.m rename to Archive/TaskTimer/TaskTimer/UYLAppDelegate.m diff --git a/TaskTimer/TaskTimer/UYLCounterView.h b/Archive/TaskTimer/TaskTimer/UYLCounterView.h similarity index 100% rename from TaskTimer/TaskTimer/UYLCounterView.h rename to Archive/TaskTimer/TaskTimer/UYLCounterView.h diff --git a/TaskTimer/TaskTimer/UYLCounterView.m b/Archive/TaskTimer/TaskTimer/UYLCounterView.m similarity index 100% rename from TaskTimer/TaskTimer/UYLCounterView.m rename to Archive/TaskTimer/TaskTimer/UYLCounterView.m diff --git a/TaskTimer/TaskTimer/UYLTaskListViewController.h b/Archive/TaskTimer/TaskTimer/UYLTaskListViewController.h similarity index 100% rename from TaskTimer/TaskTimer/UYLTaskListViewController.h rename to Archive/TaskTimer/TaskTimer/UYLTaskListViewController.h diff --git a/TaskTimer/TaskTimer/UYLTaskListViewController.m b/Archive/TaskTimer/TaskTimer/UYLTaskListViewController.m similarity index 100% rename from TaskTimer/TaskTimer/UYLTaskListViewController.m rename to Archive/TaskTimer/TaskTimer/UYLTaskListViewController.m diff --git a/TaskTimer/TaskTimer/UYLTaskViewController.h b/Archive/TaskTimer/TaskTimer/UYLTaskViewController.h similarity index 100% rename from TaskTimer/TaskTimer/UYLTaskViewController.h rename to Archive/TaskTimer/TaskTimer/UYLTaskViewController.h diff --git a/TaskTimer/TaskTimer/UYLTaskViewController.m b/Archive/TaskTimer/TaskTimer/UYLTaskViewController.m similarity index 100% rename from TaskTimer/TaskTimer/UYLTaskViewController.m rename to Archive/TaskTimer/TaskTimer/UYLTaskViewController.m diff --git a/TaskTimer/TaskTimer/checked.png b/Archive/TaskTimer/TaskTimer/checked.png similarity index 100% rename from TaskTimer/TaskTimer/checked.png rename to Archive/TaskTimer/TaskTimer/checked.png diff --git a/TaskTimer/TaskTimer/checked@2x.png b/Archive/TaskTimer/TaskTimer/checked@2x.png similarity index 100% rename from TaskTimer/TaskTimer/checked@2x.png rename to Archive/TaskTimer/TaskTimer/checked@2x.png diff --git a/SyncMe/SyncMe/en.lproj/InfoPlist.strings b/Archive/TaskTimer/TaskTimer/en.lproj/InfoPlist.strings similarity index 100% rename from SyncMe/SyncMe/en.lproj/InfoPlist.strings rename to Archive/TaskTimer/TaskTimer/en.lproj/InfoPlist.strings diff --git a/TaskTimer/TaskTimer/main.m b/Archive/TaskTimer/TaskTimer/main.m similarity index 100% rename from TaskTimer/TaskTimer/main.m rename to Archive/TaskTimer/TaskTimer/main.m diff --git a/TaskTimer/TaskTimer/redbutton.png b/Archive/TaskTimer/TaskTimer/redbutton.png similarity index 100% rename from TaskTimer/TaskTimer/redbutton.png rename to Archive/TaskTimer/TaskTimer/redbutton.png diff --git a/TaskTimer/TaskTimer/start.png b/Archive/TaskTimer/TaskTimer/start.png similarity index 100% rename from TaskTimer/TaskTimer/start.png rename to Archive/TaskTimer/TaskTimer/start.png diff --git a/TaskTimer/TaskTimer/start@2x.png b/Archive/TaskTimer/TaskTimer/start@2x.png similarity index 100% rename from TaskTimer/TaskTimer/start@2x.png rename to Archive/TaskTimer/TaskTimer/start@2x.png diff --git a/TaskTimer/TaskTimer/stop.png b/Archive/TaskTimer/TaskTimer/stop.png similarity index 100% rename from TaskTimer/TaskTimer/stop.png rename to Archive/TaskTimer/TaskTimer/stop.png diff --git a/TaskTimer/TaskTimer/stop@2x.png b/Archive/TaskTimer/TaskTimer/stop@2x.png similarity index 100% rename from TaskTimer/TaskTimer/stop@2x.png rename to Archive/TaskTimer/TaskTimer/stop@2x.png diff --git a/TaskTimer/TaskTimer/unchecked.png b/Archive/TaskTimer/TaskTimer/unchecked.png similarity index 100% rename from TaskTimer/TaskTimer/unchecked.png rename to Archive/TaskTimer/TaskTimer/unchecked.png diff --git a/TaskTimer/TaskTimer/unchecked@2x.png b/Archive/TaskTimer/TaskTimer/unchecked@2x.png similarity index 100% rename from TaskTimer/TaskTimer/unchecked@2x.png rename to Archive/TaskTimer/TaskTimer/unchecked@2x.png diff --git a/TwitterSearch/TwitterSearch.xcodeproj/project.pbxproj b/Archive/TwitterSearch/TwitterSearch.xcodeproj/project.pbxproj similarity index 90% rename from TwitterSearch/TwitterSearch.xcodeproj/project.pbxproj rename to Archive/TwitterSearch/TwitterSearch.xcodeproj/project.pbxproj index 4b86589..7223dfd 100644 --- a/TwitterSearch/TwitterSearch.xcodeproj/project.pbxproj +++ b/Archive/TwitterSearch/TwitterSearch.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 47; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ @@ -209,7 +209,7 @@ 53CB80F0139D70FF0030ADD7 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0700; + LastUpgradeCheck = 1120; TargetAttributes = { 5345C8541C32CC3C00B88AB7 = { CreatedOnToolsVersion = 7.2; @@ -221,11 +221,12 @@ }; }; buildConfigurationList = 53CB80F3139D70FF0030ADD7 /* Build configuration list for PBXProject "TwitterSearch" */; - compatibilityVersion = "Xcode 6.3"; - developmentRegion = English; + compatibilityVersion = "Xcode 11.0"; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); mainGroup = 53CB80EE139D70FF0030ADD7; productRefGroup = 53CB80FA139D70FF0030ADD7 /* Products */; @@ -338,7 +339,11 @@ GCC_WARN_UNUSED_FUNCTION = YES; INFOPLIST_FILE = TwitterSearchUnitTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.2; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.TwitterSearchUnitTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -377,7 +382,11 @@ GCC_WARN_UNUSED_FUNCTION = YES; INFOPLIST_FILE = TwitterSearchUnitTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.2; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.TwitterSearchUnitTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -389,14 +398,38 @@ 53CB8118139D70FF0030ADD7 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = "compiler-default"; + GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = DEBUG; GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_VERSION = ""; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; ONLY_ACTIVE_ARCH = YES; @@ -407,10 +440,34 @@ 53CB8119139D70FF0030ADD7 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = "compiler-default"; + GCC_NO_COMMON_BLOCKS = YES; GCC_VERSION = ""; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; @@ -472,6 +529,7 @@ 5345C85E1C32CC3C00B88AB7 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; 53CB80F3139D70FF0030ADD7 /* Build configuration list for PBXProject "TwitterSearch" */ = { isa = XCConfigurationList; diff --git a/Archive/TwitterSearch/TwitterSearch.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Archive/TwitterSearch/TwitterSearch.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..82063ef --- /dev/null +++ b/Archive/TwitterSearch/TwitterSearch.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Archive/TwitterSearch/TwitterSearch.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Archive/TwitterSearch/TwitterSearch.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Archive/TwitterSearch/TwitterSearch.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Contents.json b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Contents.json similarity index 72% rename from TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Contents.json rename to Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Contents.json index 49901b5..dd3842a 100644 --- a/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Contents.json @@ -1,5 +1,17 @@ { "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "icon2-20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "icon2-20@3x.png", + "scale" : "3x" + }, { "size" : "29x29", "idiom" : "iphone", @@ -36,6 +48,18 @@ "filename" : "Icon@3x.png", "scale" : "3x" }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "icon2-20.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "icon2-20@2x-1.png", + "scale" : "2x" + }, { "size" : "29x29", "idiom" : "ipad", @@ -77,6 +101,12 @@ "idiom" : "ipad", "filename" : "Icon2-835@2x.png", "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "icon2-1024.png", + "scale" : "1x" } ], "info" : { diff --git a/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-29.png b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-29.png similarity index 100% rename from TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-29.png rename to Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-29.png diff --git a/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-29@2x-1.png b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-29@2x-1.png similarity index 100% rename from TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-29@2x-1.png rename to Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-29@2x-1.png diff --git a/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-29@2x.png b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-29@2x.png similarity index 100% rename from TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-29@2x.png rename to Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-29@2x.png diff --git a/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-29@3x.png b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-29@3x.png similarity index 100% rename from TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-29@3x.png rename to Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-29@3x.png diff --git a/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-40.png b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-40.png similarity index 100% rename from TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-40.png rename to Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-40.png diff --git a/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-40@2x-1.png b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-40@2x-1.png similarity index 100% rename from TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-40@2x-1.png rename to Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-40@2x-1.png diff --git a/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-40@2x.png b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-40@2x.png similarity index 100% rename from TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-40@2x.png rename to Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-40@2x.png diff --git a/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-76.png b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-76.png similarity index 100% rename from TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-76.png rename to Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-76.png diff --git a/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-76@2x.png b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-76@2x.png similarity index 100% rename from TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-76@2x.png rename to Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-76@2x.png diff --git a/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-835@2x.png b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-835@2x.png similarity index 100% rename from TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-835@2x.png rename to Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon2-835@2x.png diff --git a/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon@2x-1.png b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon@2x-1.png similarity index 100% rename from TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon@2x-1.png rename to Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon@2x-1.png diff --git a/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon@2x.png b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon@2x.png similarity index 100% rename from TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon@2x.png rename to Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon@2x.png diff --git a/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon@3x.png b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon@3x.png similarity index 100% rename from TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon@3x.png rename to Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/Icon@3x.png diff --git a/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/icon2-1024.png b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/icon2-1024.png new file mode 100644 index 0000000..b628b9e Binary files /dev/null and b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/icon2-1024.png differ diff --git a/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/icon2-20.png b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/icon2-20.png new file mode 100644 index 0000000..08dee7a Binary files /dev/null and b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/icon2-20.png differ diff --git a/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/icon2-20@2x-1.png b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/icon2-20@2x-1.png new file mode 100644 index 0000000..d6fccd4 Binary files /dev/null and b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/icon2-20@2x-1.png differ diff --git a/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/icon2-20@2x.png b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/icon2-20@2x.png new file mode 100644 index 0000000..d6fccd4 Binary files /dev/null and b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/icon2-20@2x.png differ diff --git a/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/icon2-20@3x.png b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/icon2-20@3x.png new file mode 100644 index 0000000..fafe147 Binary files /dev/null and b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/AppIcon.appiconset/icon2-20@3x.png differ diff --git a/Archive/TwitterSearch/TwitterSearch/Images.xcassets/Contents.json b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/Archive/TwitterSearch/TwitterSearch/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TwitterSearch/TwitterSearch/LaunchScreen.storyboard b/Archive/TwitterSearch/TwitterSearch/LaunchScreen.storyboard similarity index 78% rename from TwitterSearch/TwitterSearch/LaunchScreen.storyboard rename to Archive/TwitterSearch/TwitterSearch/LaunchScreen.storyboard index 360a69a..b3944d6 100644 --- a/TwitterSearch/TwitterSearch/LaunchScreen.storyboard +++ b/Archive/TwitterSearch/TwitterSearch/LaunchScreen.storyboard @@ -1,8 +1,10 @@ - - + + + - + + @@ -10,13 +12,13 @@ - - + + - + - + @@ -30,7 +32,7 @@ - + diff --git a/TwitterSearch/TwitterSearch/NSString+URLEncoding.h b/Archive/TwitterSearch/TwitterSearch/NSString+URLEncoding.h similarity index 100% rename from TwitterSearch/TwitterSearch/NSString+URLEncoding.h rename to Archive/TwitterSearch/TwitterSearch/NSString+URLEncoding.h diff --git a/TwitterSearch/TwitterSearch/NSString+URLEncoding.m b/Archive/TwitterSearch/TwitterSearch/NSString+URLEncoding.m similarity index 100% rename from TwitterSearch/TwitterSearch/NSString+URLEncoding.m rename to Archive/TwitterSearch/TwitterSearch/NSString+URLEncoding.m diff --git a/TwitterSearch/TwitterSearch/RootViewController.h b/Archive/TwitterSearch/TwitterSearch/RootViewController.h similarity index 100% rename from TwitterSearch/TwitterSearch/RootViewController.h rename to Archive/TwitterSearch/TwitterSearch/RootViewController.h diff --git a/TwitterSearch/TwitterSearch/RootViewController.m b/Archive/TwitterSearch/TwitterSearch/RootViewController.m similarity index 100% rename from TwitterSearch/TwitterSearch/RootViewController.m rename to Archive/TwitterSearch/TwitterSearch/RootViewController.m diff --git a/TwitterSearch/TwitterSearch/SearchViewController.h b/Archive/TwitterSearch/TwitterSearch/SearchViewController.h similarity index 100% rename from TwitterSearch/TwitterSearch/SearchViewController.h rename to Archive/TwitterSearch/TwitterSearch/SearchViewController.h diff --git a/TwitterSearch/TwitterSearch/SearchViewController.m b/Archive/TwitterSearch/TwitterSearch/SearchViewController.m similarity index 100% rename from TwitterSearch/TwitterSearch/SearchViewController.m rename to Archive/TwitterSearch/TwitterSearch/SearchViewController.m diff --git a/TwitterSearch/TwitterSearch/Storyboard.storyboard b/Archive/TwitterSearch/TwitterSearch/Storyboard.storyboard similarity index 86% rename from TwitterSearch/TwitterSearch/Storyboard.storyboard rename to Archive/TwitterSearch/TwitterSearch/Storyboard.storyboard index e6f596e..4739dc5 100644 --- a/TwitterSearch/TwitterSearch/Storyboard.storyboard +++ b/Archive/TwitterSearch/TwitterSearch/Storyboard.storyboard @@ -1,9 +1,10 @@ - - + + + - - + + @@ -11,6 +12,7 @@ + @@ -26,15 +28,15 @@ - - + + - + - + @@ -42,11 +44,11 @@ - + - + @@ -63,38 +65,38 @@ - + - + - + - + - + - + @@ -121,7 +123,7 @@ - + diff --git a/TwitterSearch/TwitterSearch/TweetCell.h b/Archive/TwitterSearch/TwitterSearch/TweetCell.h similarity index 100% rename from TwitterSearch/TwitterSearch/TweetCell.h rename to Archive/TwitterSearch/TwitterSearch/TweetCell.h diff --git a/TwitterSearch/TwitterSearch/TweetCell.m b/Archive/TwitterSearch/TwitterSearch/TweetCell.m similarity index 100% rename from TwitterSearch/TwitterSearch/TweetCell.m rename to Archive/TwitterSearch/TwitterSearch/TweetCell.m diff --git a/TwitterSearch/TwitterSearch/TwitterSearch-Info.plist b/Archive/TwitterSearch/TwitterSearch/TwitterSearch-Info.plist similarity index 100% rename from TwitterSearch/TwitterSearch/TwitterSearch-Info.plist rename to Archive/TwitterSearch/TwitterSearch/TwitterSearch-Info.plist diff --git a/TwitterSearch/TwitterSearch/TwitterSearchAppDelegate.h b/Archive/TwitterSearch/TwitterSearch/TwitterSearchAppDelegate.h similarity index 100% rename from TwitterSearch/TwitterSearch/TwitterSearchAppDelegate.h rename to Archive/TwitterSearch/TwitterSearch/TwitterSearchAppDelegate.h diff --git a/TwitterSearch/TwitterSearch/TwitterSearchAppDelegate.m b/Archive/TwitterSearch/TwitterSearch/TwitterSearchAppDelegate.m similarity index 100% rename from TwitterSearch/TwitterSearch/TwitterSearchAppDelegate.m rename to Archive/TwitterSearch/TwitterSearch/TwitterSearchAppDelegate.m diff --git a/TaskTimer/TaskTimer/en.lproj/InfoPlist.strings b/Archive/TwitterSearch/TwitterSearch/en.lproj/InfoPlist.strings similarity index 100% rename from TaskTimer/TaskTimer/en.lproj/InfoPlist.strings rename to Archive/TwitterSearch/TwitterSearch/en.lproj/InfoPlist.strings diff --git a/TwitterSearch/TwitterSearch/main.m b/Archive/TwitterSearch/TwitterSearch/main.m similarity index 100% rename from TwitterSearch/TwitterSearch/main.m rename to Archive/TwitterSearch/TwitterSearch/main.m diff --git a/TwitterSearch/TwitterSearchUnitTests/Info.plist b/Archive/TwitterSearch/TwitterSearchUnitTests/Info.plist similarity index 100% rename from TwitterSearch/TwitterSearchUnitTests/Info.plist rename to Archive/TwitterSearch/TwitterSearchUnitTests/Info.plist diff --git a/TwitterSearch/TwitterSearchUnitTests/NSStringURLEncodingUnitTests.m b/Archive/TwitterSearch/TwitterSearchUnitTests/NSStringURLEncodingUnitTests.m similarity index 100% rename from TwitterSearch/TwitterSearchUnitTests/NSStringURLEncodingUnitTests.m rename to Archive/TwitterSearch/TwitterSearchUnitTests/NSStringURLEncodingUnitTests.m diff --git a/AutoLayout/AutoLayout.xcodeproj/project.pbxproj b/AutoLayout/AutoLayout.xcodeproj/project.pbxproj index 198db55..d37e045 100644 --- a/AutoLayout/AutoLayout.xcodeproj/project.pbxproj +++ b/AutoLayout/AutoLayout.xcodeproj/project.pbxproj @@ -132,22 +132,24 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0720; - LastUpgradeCheck = 0900; + LastUpgradeCheck = 1020; ORGANIZATIONNAME = "Keith Harrison"; TargetAttributes = { 53D6A5EC1C53BF5200A81A14 = { CreatedOnToolsVersion = 7.2; - LastSwiftMigration = 0900; + DevelopmentTeam = LCC2J94N44; + LastSwiftMigration = 1020; }; }; }; buildConfigurationList = 53D6A5E81C53BF5200A81A14 /* Build configuration list for PBXProject "AutoLayout" */; compatibilityVersion = "Xcode 6.3"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, Base, + ar, ); mainGroup = 53D6A5E41C53BF5200A81A14; productRefGroup = 53D6A5EE1C53BF5200A81A14 /* Products */; @@ -228,12 +230,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -282,12 +286,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -320,12 +326,12 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + DEVELOPMENT_TEAM = LCC2J94N44; INFOPLIST_FILE = AutoLayout/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.AutoLayout; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -333,13 +339,13 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + DEVELOPMENT_TEAM = LCC2J94N44; INFOPLIST_FILE = AutoLayout/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.AutoLayout; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Release; }; diff --git a/AutoLayout/AutoLayout.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/AutoLayout/AutoLayout.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..ea9b143 --- /dev/null +++ b/AutoLayout/AutoLayout.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/AutoLayout/AutoLayout.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/AutoLayout/AutoLayout.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/AutoLayout/AutoLayout.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/AutoLayout/AutoLayout/AdaptiveViewController.swift b/AutoLayout/AutoLayout/AdaptiveViewController.swift index 893d555..e96eb39 100644 --- a/AutoLayout/AutoLayout/AdaptiveViewController.swift +++ b/AutoLayout/AutoLayout/AdaptiveViewController.swift @@ -67,18 +67,18 @@ class AdaptiveViewController: UIViewController { textLabel.textColor = .gray redButton.translatesAutoresizingMaskIntoConstraints = false - redButton.setTitle("No don't do it", for: UIControlState()) + redButton.setTitle("No don't do it", for: UIControl.State()) let redImage = UIImage(named: "redButton") - redButton.setBackgroundImage(redImage, for: UIControlState()) - redButton.contentEdgeInsets = UIEdgeInsetsMake(8, 16, 8, 16) + redButton.setBackgroundImage(redImage, for: UIControl.State()) + redButton.contentEdgeInsets = UIEdgeInsets.init(top: 8, left: 16, bottom: 8, right: 16) let noAction = #selector(noAction(_:)) redButton.addTarget(self, action: noAction, for: .touchUpInside) greenButton.translatesAutoresizingMaskIntoConstraints = false - greenButton.setTitle("Start the Countdown!!!", for: UIControlState()) + greenButton.setTitle("Start the Countdown!!!", for: UIControl.State()) let greenImage = UIImage(named: "greenButton") - greenButton.setBackgroundImage(greenImage, for: UIControlState()) - greenButton.contentEdgeInsets = UIEdgeInsetsMake(8, 16, 8, 16) + greenButton.setBackgroundImage(greenImage, for: UIControl.State()) + greenButton.contentEdgeInsets = UIEdgeInsets.init(top: 8, left: 16, bottom: 8, right: 16) let yesAction = #selector(yesAction(_:)) greenButton.addTarget(self, action: yesAction, for: .touchUpInside) @@ -89,7 +89,16 @@ class AdaptiveViewController: UIViewController { view.addLayoutGuide(middleGuide) view.addLayoutGuide(trailingGuide) } - + + private var firstTime = true + override func viewWillLayoutSubviews() { + super.viewWillLayoutSubviews() + if firstTime { + firstTime = false + enableConstraintsForWidth(traitCollection.horizontalSizeClass) + } + } + private func setupConstraints() { // ========================================= @@ -150,8 +159,6 @@ class AdaptiveViewController: UIViewController { compactConstraints.append(redButton.centerXAnchor.constraint(equalTo: view.centerXAnchor)) compactConstraints.append(greenButton.centerXAnchor.constraint(equalTo: view.centerXAnchor)) compactConstraints.append(greenButton.topAnchor.constraint(equalTo: redButton.bottomAnchor, constant: 8.0)) - - enableConstraintsForWidth(traitCollection.horizontalSizeClass) } private func enableConstraintsForWidth(_ horizontalSizeClass: UIUserInterfaceSizeClass) { diff --git a/AutoLayout/AutoLayout/AppDelegate.swift b/AutoLayout/AutoLayout/AppDelegate.swift index de5cca2..828bcfd 100644 --- a/AutoLayout/AutoLayout/AppDelegate.swift +++ b/AutoLayout/AutoLayout/AppDelegate.swift @@ -38,7 +38,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDele var window: UIWindow? - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { let splitViewController = self.window!.rootViewController as! UISplitViewController splitViewController.delegate = self return true diff --git a/AutoLayout/AutoLayout/LayoutGuideController.swift b/AutoLayout/AutoLayout/LayoutGuideController.swift index 22caae6..b092cd7 100644 --- a/AutoLayout/AutoLayout/LayoutGuideController.swift +++ b/AutoLayout/AutoLayout/LayoutGuideController.swift @@ -33,24 +33,23 @@ import UIKit -class LayoutGuideController: UIViewController { - +final class LayoutGuideController: UIViewController { // Use layout guides as an alternative to spacer views // The two buttons will be placed between the view margins // with equal spacing between the buttons and the margins // so that the width of the three guides is equal. - + // = |+++++++++++************+++++++++++************+++++++++++| = // = |+ leading +* no *+ middle +* yes *+ trailing+| = // = |+ guide +* button *+ guide +* button *+ guide +| = // = |+++++++++++************+++++++++++************+++++++++++| = - + let leadingGuide = UILayoutGuide() let noButton = UIButton(type: .custom) let middleGuide = UILayoutGuide() let yesButton = UIButton(type: .custom) let trailingGuide = UILayoutGuide() - + override func viewDidLoad() { super.viewDidLoad() setupViews() @@ -58,76 +57,73 @@ class LayoutGuideController: UIViewController { } private func setupViews() { - // Configure the buttons and add them to the superview - + noButton.translatesAutoresizingMaskIntoConstraints = false - noButton.setTitle("No", for: UIControlState()) + noButton.setTitle("No", for: .normal) let redImage = UIImage(named: "redButton") - noButton.setBackgroundImage(redImage, for: UIControlState()) - noButton.contentEdgeInsets = UIEdgeInsetsMake(8, 16, 8, 16) - let noThanksAction = #selector(LayoutGuideController.noThanks(_:)) - noButton.addTarget(self, action: noThanksAction, for: .touchUpInside) - + noButton.setBackgroundImage(redImage, for: .normal) + noButton.contentEdgeInsets = UIEdgeInsets(top: 8, left: 16, bottom: 8, right: 16) + noButton.addTarget(self, action: #selector(LayoutGuideController.noThanks(_:)), for: .touchUpInside) + yesButton.translatesAutoresizingMaskIntoConstraints = false - yesButton.setTitle("Yes please!", for: UIControlState()) + yesButton.setTitle("Yes please!", for: .normal) let greenImage = UIImage(named: "greenButton") - yesButton.setBackgroundImage(greenImage, for: UIControlState()) - yesButton.contentEdgeInsets = UIEdgeInsetsMake(8, 16, 8, 16) - let yesPleaseAction = #selector(LayoutGuideController.yesPlease(_:)) - yesButton.addTarget(self, action: yesPleaseAction, for: .touchUpInside) - + yesButton.setBackgroundImage(greenImage, for: .normal) + yesButton.contentEdgeInsets = UIEdgeInsets(top: 8, left: 16, bottom: 8, right: 16) + yesButton.addTarget(self, action: #selector(LayoutGuideController.yesPlease(_:)), for: .touchUpInside) + view.addSubview(noButton) view.addSubview(yesButton) - + // Add the layout guides to the view // Note that the guides are not part of the // view hierarchy - + view.addLayoutGuide(leadingGuide) view.addLayoutGuide(middleGuide) view.addLayoutGuide(trailingGuide) } - + private func setupConstraints() { - // The views are spaced relative to the margings of // the superview. To space the views relative to the - // edges of the super view replace "margings" with + // edges of the super view replace "margins" with // "view" in the constraints below - + let margins = view.layoutMarginsGuide - - // leading to trailing constraints - // working from left to right - - margins.leadingAnchor.constraint(equalTo: leadingGuide.leadingAnchor).isActive = true - leadingGuide.trailingAnchor.constraint(equalTo: noButton.leadingAnchor).isActive = true - noButton.trailingAnchor.constraint(equalTo: middleGuide.leadingAnchor).isActive = true - middleGuide.trailingAnchor.constraint(equalTo: yesButton.leadingAnchor).isActive = true - yesButton.trailingAnchor.constraint(equalTo: trailingGuide.leadingAnchor).isActive = true - trailingGuide.trailingAnchor.constraint(equalTo: margins.trailingAnchor).isActive = true - - // The buttons should have the same width - noButton.widthAnchor.constraint(equalTo: yesButton.widthAnchor).isActive = true - - // The guides should have the same width - leadingGuide.widthAnchor.constraint(equalTo: middleGuide.widthAnchor).isActive = true - leadingGuide.widthAnchor.constraint(equalTo: trailingGuide.widthAnchor).isActive = true - - // Center everything vertically in the super view - leadingGuide.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true - middleGuide.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true - trailingGuide.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true - noButton.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true - yesButton.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true + NSLayoutConstraint.activate([ + // leading to trailing constraints + // working from left to right + + margins.leadingAnchor.constraint(equalTo: leadingGuide.leadingAnchor), + leadingGuide.trailingAnchor.constraint(equalTo: noButton.leadingAnchor), + noButton.trailingAnchor.constraint(equalTo: middleGuide.leadingAnchor), + middleGuide.trailingAnchor.constraint(equalTo: yesButton.leadingAnchor), + yesButton.trailingAnchor.constraint(equalTo: trailingGuide.leadingAnchor), + trailingGuide.trailingAnchor.constraint(equalTo: margins.trailingAnchor), + + // The buttons should have the same width + noButton.widthAnchor.constraint(equalTo: yesButton.widthAnchor), + + // The guides should have the same width + leadingGuide.widthAnchor.constraint(equalTo: middleGuide.widthAnchor), + leadingGuide.widthAnchor.constraint(equalTo: trailingGuide.widthAnchor), + + // Center everything vertically in the super view + leadingGuide.centerYAnchor.constraint(equalTo: view.centerYAnchor), + middleGuide.centerYAnchor.constraint(equalTo: view.centerYAnchor), + trailingGuide.centerYAnchor.constraint(equalTo: view.centerYAnchor), + noButton.centerYAnchor.constraint(equalTo: view.centerYAnchor), + yesButton.centerYAnchor.constraint(equalTo: view.centerYAnchor) + ]) } - - @objc func noThanks(_ sender: UIButton) { + + @objc private func noThanks(_ sender: UIButton) { print("No thanks!") } - - @objc func yesPlease(_ sender: UIButton) { + + @objc private func yesPlease(_ sender: UIButton) { print("Yes please!") } } diff --git a/AutoLayout/AutoLayout/UIViewController+Constraint.swift b/AutoLayout/AutoLayout/UIViewController+Constraint.swift index a553a3a..8cb4f05 100644 --- a/AutoLayout/AutoLayout/UIViewController+Constraint.swift +++ b/AutoLayout/AutoLayout/UIViewController+Constraint.swift @@ -69,7 +69,7 @@ extension UIViewController { - Parameter identifier: A String identifier to aid debugging. */ - func addConstraintFromView(_ subview: UIView?, attribute: NSLayoutAttribute, multiplier: CGFloat, identifier: String) { + func addConstraintFromView(_ subview: UIView?, attribute: NSLayoutConstraint.Attribute, multiplier: CGFloat, identifier: String) { if let subview = subview { let constraint = NSLayoutConstraint(item: subview, attribute: attribute, diff --git a/AutoLayout/README.md b/AutoLayout/README.md index 5905031..42086b1 100644 --- a/AutoLayout/README.md +++ b/AutoLayout/README.md @@ -12,12 +12,12 @@ Auto Layout examples using Interface Builder and in code. See the following posts further details: -+ [Proportional Spacing with Auto Layout](http://useyourloaf.com/blog/proportional-spacing-with-auto-layout/) -+ [Adapting Images for Size Classes](http://useyourloaf.com/blog/adapting-images-for-size-classes/) -+ [Pain Free Constraints with Layout Anchors](http://useyourloaf.com/blog/pain-free-constraints-with-layout-anchors/) -+ [Goodbye Spacer Views Hello Layout Guides](http://useyourloaf.com/blog/goodbye-spacer-views-hello-layout-guides/) -+ [Adapting AutoLayout Without Interface Builder](http://useyourloaf.com/blog/adapting-auto-layout-without-interface-builder/) -+ [Natural Text Alignment for RTL Languages](http://useyourloaf.com/blog/natural-text-alignment-for-rtl-languages/) ++ [Proportional Spacing with Auto Layout](https://useyourloaf.com/blog/proportional-spacing-with-auto-layout/) ++ [Adapting Images for Size Classes](https://useyourloaf.com/blog/adapting-images-for-size-classes/) ++ [Pain Free Constraints with Layout Anchors](https://useyourloaf.com/blog/pain-free-constraints-with-layout-anchors/) ++ [Goodbye Spacer Views Hello Layout Guides](https://useyourloaf.com/blog/goodbye-spacer-views-hello-layout-guides/) ++ [Adapting AutoLayout Without Interface Builder](https://useyourloaf.com/blog/adapting-auto-layout-without-interface-builder/) ++ [Natural Text Alignment for RTL Languages](https://useyourloaf.com/blog/natural-text-alignment-for-rtl-languages/) #### Version History diff --git a/BlastOff/BlastOff.xcodeproj/project.pbxproj b/BlastOff/BlastOff.xcodeproj/project.pbxproj new file mode 100644 index 0000000..0f9f4af --- /dev/null +++ b/BlastOff/BlastOff.xcodeproj/project.pbxproj @@ -0,0 +1,349 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 53E5DCE32184979D001EE0D8 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53E5DCE22184979D001EE0D8 /* AppDelegate.swift */; }; + 53E5DCE82184979D001EE0D8 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 53E5DCE62184979D001EE0D8 /* Main.storyboard */; }; + 53E5DCEA2184979E001EE0D8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 53E5DCE92184979E001EE0D8 /* Assets.xcassets */; }; + 53E5DCED2184979E001EE0D8 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 53E5DCEB2184979E001EE0D8 /* LaunchScreen.storyboard */; }; + 53E5DCFE2184A8EF001EE0D8 /* LaunchController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53E5DCFD2184A8EF001EE0D8 /* LaunchController.swift */; }; + 53E5DCFF2184A938001EE0D8 /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = 53E5DCF42184A728001EE0D8 /* Localizable.stringsdict */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 53B0B511218750E800BBD609 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + 53E5DCDF2184979D001EE0D8 /* BlastOff.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BlastOff.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 53E5DCE22184979D001EE0D8 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 53E5DCE72184979D001EE0D8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 53E5DCE92184979E001EE0D8 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 53E5DCEC2184979E001EE0D8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 53E5DCEE2184979E001EE0D8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 53E5DCF42184A728001EE0D8 /* Localizable.stringsdict */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; path = Localizable.stringsdict; sourceTree = ""; }; + 53E5DCFD2184A8EF001EE0D8 /* LaunchController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LaunchController.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 53E5DCDC2184979D001EE0D8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 53E5DCD62184979D001EE0D8 = { + isa = PBXGroup; + children = ( + 53B0B511218750E800BBD609 /* README.md */, + 53E5DCE12184979D001EE0D8 /* BlastOff */, + 53E5DCE02184979D001EE0D8 /* Products */, + ); + sourceTree = ""; + }; + 53E5DCE02184979D001EE0D8 /* Products */ = { + isa = PBXGroup; + children = ( + 53E5DCDF2184979D001EE0D8 /* BlastOff.app */, + ); + name = Products; + sourceTree = ""; + }; + 53E5DCE12184979D001EE0D8 /* BlastOff */ = { + isa = PBXGroup; + children = ( + 53E5DCE22184979D001EE0D8 /* AppDelegate.swift */, + 53E5DCFD2184A8EF001EE0D8 /* LaunchController.swift */, + 53E5DCF42184A728001EE0D8 /* Localizable.stringsdict */, + 53E5DCE62184979D001EE0D8 /* Main.storyboard */, + 53E5DCE92184979E001EE0D8 /* Assets.xcassets */, + 53E5DCEB2184979E001EE0D8 /* LaunchScreen.storyboard */, + 53E5DCEE2184979E001EE0D8 /* Info.plist */, + ); + path = BlastOff; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 53E5DCDE2184979D001EE0D8 /* BlastOff */ = { + isa = PBXNativeTarget; + buildConfigurationList = 53E5DCF12184979E001EE0D8 /* Build configuration list for PBXNativeTarget "BlastOff" */; + buildPhases = ( + 53E5DCDB2184979D001EE0D8 /* Sources */, + 53E5DCDC2184979D001EE0D8 /* Frameworks */, + 53E5DCDD2184979D001EE0D8 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = BlastOff; + productName = BlastOff; + productReference = 53E5DCDF2184979D001EE0D8 /* BlastOff.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 53E5DCD72184979D001EE0D8 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1000; + LastUpgradeCheck = 1000; + ORGANIZATIONNAME = "Keith Harrison"; + TargetAttributes = { + 53E5DCDE2184979D001EE0D8 = { + CreatedOnToolsVersion = 10.0; + }; + }; + }; + buildConfigurationList = 53E5DCDA2184979D001EE0D8 /* Build configuration list for PBXProject "BlastOff" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 53E5DCD62184979D001EE0D8; + productRefGroup = 53E5DCE02184979D001EE0D8 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 53E5DCDE2184979D001EE0D8 /* BlastOff */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 53E5DCDD2184979D001EE0D8 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 53E5DCED2184979E001EE0D8 /* LaunchScreen.storyboard in Resources */, + 53E5DCFF2184A938001EE0D8 /* Localizable.stringsdict in Resources */, + 53E5DCEA2184979E001EE0D8 /* Assets.xcassets in Resources */, + 53E5DCE82184979D001EE0D8 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 53E5DCDB2184979D001EE0D8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 53E5DCFE2184A8EF001EE0D8 /* LaunchController.swift in Sources */, + 53E5DCE32184979D001EE0D8 /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 53E5DCE62184979D001EE0D8 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 53E5DCE72184979D001EE0D8 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 53E5DCEB2184979E001EE0D8 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 53E5DCEC2184979E001EE0D8 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 53E5DCEF2184979E001EE0D8 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + 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_IMPLICIT_RETAIN_SELF = 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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 53E5DCF02184979E001EE0D8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + 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_IMPLICIT_RETAIN_SELF = 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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 53E5DCF22184979E001EE0D8 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = LCC2J94N44; + INFOPLIST_FILE = BlastOff/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.BlastOff; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 53E5DCF32184979E001EE0D8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = LCC2J94N44; + INFOPLIST_FILE = BlastOff/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.BlastOff; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 53E5DCDA2184979D001EE0D8 /* Build configuration list for PBXProject "BlastOff" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 53E5DCEF2184979E001EE0D8 /* Debug */, + 53E5DCF02184979E001EE0D8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 53E5DCF12184979E001EE0D8 /* Build configuration list for PBXNativeTarget "BlastOff" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 53E5DCF22184979E001EE0D8 /* Debug */, + 53E5DCF32184979E001EE0D8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 53E5DCD72184979D001EE0D8 /* Project object */; +} diff --git a/BlastOff/BlastOff.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/BlastOff/BlastOff.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..dc746e2 --- /dev/null +++ b/BlastOff/BlastOff.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/BlastOff/BlastOff.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/BlastOff/BlastOff.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/BlastOff/BlastOff.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/BlastOff/BlastOff/AppDelegate.swift b/BlastOff/BlastOff/AppDelegate.swift new file mode 100644 index 0000000..dd55aa9 --- /dev/null +++ b/BlastOff/BlastOff/AppDelegate.swift @@ -0,0 +1,35 @@ +// Copyright © 2018 Keith Harrison. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? +} diff --git a/BlastOff/BlastOff/Assets.xcassets/AppIcon.appiconset/Contents.json b/BlastOff/BlastOff/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d8db8d6 --- /dev/null +++ b/BlastOff/BlastOff/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/BlastOff/BlastOff/Assets.xcassets/Contents.json b/BlastOff/BlastOff/Assets.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/BlastOff/BlastOff/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/BlastOff/BlastOff/Base.lproj/LaunchScreen.storyboard b/BlastOff/BlastOff/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..bfa3612 --- /dev/null +++ b/BlastOff/BlastOff/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/BlastOff/BlastOff/Base.lproj/Main.storyboard b/BlastOff/BlastOff/Base.lproj/Main.storyboard new file mode 100644 index 0000000..d7b776c --- /dev/null +++ b/BlastOff/BlastOff/Base.lproj/Main.storyboard @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/BlastOff/BlastOff/Info.plist b/BlastOff/BlastOff/Info.plist new file mode 100644 index 0000000..16be3b6 --- /dev/null +++ b/BlastOff/BlastOff/Info.plist @@ -0,0 +1,45 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/BlastOff/BlastOff/LaunchController.swift b/BlastOff/BlastOff/LaunchController.swift new file mode 100644 index 0000000..51718d4 --- /dev/null +++ b/BlastOff/BlastOff/LaunchController.swift @@ -0,0 +1,48 @@ +// Copyright © 2018 Keith Harrison. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import UIKit + +final class LaunchController: UIViewController { + + @IBOutlet private var abortButton: UIButton! + @IBOutlet private var startButton: UIButton! + + override func viewDidLoad() { + super.viewDidLoad() + setupView() + } + + private func setupView() { + let startTitle = NSLocalizedString("Start", comment: "Start button") + startButton.setTitle(startTitle, for: .normal) + + let abortTitle = NSLocalizedString("Abort", comment: "Abort button") + abortButton.setTitle(abortTitle, for: .normal) + } +} diff --git a/BlastOff/BlastOff/Localizable.stringsdict b/BlastOff/BlastOff/Localizable.stringsdict new file mode 100755 index 0000000..f2f6b22 --- /dev/null +++ b/BlastOff/BlastOff/Localizable.stringsdict @@ -0,0 +1,30 @@ + + + + + Abort + + NSStringVariableWidthRuleType + + 20 + Abort + 25 + Abort Launch + 50 + Abort Launch Sequence + + + Start + + NSStringVariableWidthRuleType + + 20 + Start + 25 + Start Countdown + 50 + Start Launch Countdown + + + + diff --git a/BlastOff/README.md b/BlastOff/README.md new file mode 100644 index 0000000..8526a74 --- /dev/null +++ b/BlastOff/README.md @@ -0,0 +1,7 @@ +# Variable Width Strings + +An example of using a **localization strings dictionary** to create variable width strings. A `UILabel` or `UIButton` will automatically show the best string from the dictionary for the available screen width. + +For further details see the following blog post: + ++ [Variable Width Strings](https://useyourloaf.com/blog/variable-width-strings/) diff --git a/Buttons/Buttons.xcodeproj/project.pbxproj b/Buttons/Buttons.xcodeproj/project.pbxproj index e1199ac..587fde8 100644 --- a/Buttons/Buttons.xcodeproj/project.pbxproj +++ b/Buttons/Buttons.xcodeproj/project.pbxproj @@ -91,18 +91,19 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0720; - LastUpgradeCheck = 0810; + LastUpgradeCheck = 1120; ORGANIZATIONNAME = "Keith Harrison"; TargetAttributes = { 5323B0B31C88D97300B183DD = { CreatedOnToolsVersion = 7.2.1; + DevelopmentTeam = LCC2J94N44; LastSwiftMigration = 0810; }; }; }; buildConfigurationList = 5323B0AF1C88D97300B183DD /* Build configuration list for PBXProject "Buttons" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, @@ -167,18 +168,27 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 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_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_IMPLICIT_RETAIN_SELF = 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; @@ -206,6 +216,7 @@ ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -214,18 +225,27 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 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_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_IMPLICIT_RETAIN_SELF = 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; @@ -246,6 +266,7 @@ MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -255,11 +276,12 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + DEVELOPMENT_TEAM = LCC2J94N44; INFOPLIST_FILE = Buttons/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.Buttons; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -267,11 +289,12 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + DEVELOPMENT_TEAM = LCC2J94N44; INFOPLIST_FILE = Buttons/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.Buttons; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 5.0; }; name = Release; }; diff --git a/Buttons/Buttons.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Buttons/Buttons.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..3f19229 --- /dev/null +++ b/Buttons/Buttons.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Buttons/Buttons.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Buttons/Buttons.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Buttons/Buttons.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Buttons/Buttons/ViewController.swift b/Buttons/Buttons/ViewController.swift index bf55080..dac117a 100644 --- a/Buttons/Buttons/ViewController.swift +++ b/Buttons/Buttons/ViewController.swift @@ -43,11 +43,11 @@ class ViewController: UIViewController { // Create a custom button and set title label style let orangeButton = UIButton(type: .custom) - orangeButton.setTitle("Orange", for: UIControlState()) - orangeButton.setTitleColor(.orange, for: UIControlState()) + orangeButton.setTitle("Orange", for: .normal) + orangeButton.setTitleColor(.orange, for: .normal) orangeButton.setTitleColor(.white, for: .highlighted) orangeButton.titleLabel?.font = UIFont.systemFont(ofSize: 14) - orangeButton.contentEdgeInsets = UIEdgeInsetsMake(8, 8, 8, 8) + orangeButton.contentEdgeInsets = UIEdgeInsets(top: 8, left: 8, bottom: 8, right: 8) // Get the pre-sliced template images direct from the // asset catalog for the default and hightlighted states @@ -55,7 +55,7 @@ class ViewController: UIViewController { let slicedBorderTemplate = UIImage(named: "slicedBorderTemplate") let slicedFillTemplate = UIImage(named: "slicedFillTemplate") - orangeButton.setBackgroundImage(slicedBorderTemplate, for: UIControlState()) + orangeButton.setBackgroundImage(slicedBorderTemplate, for: .normal) orangeButton.setBackgroundImage(slicedFillTemplate, for: .highlighted) // The tintColor controls the colour used by the template images diff --git a/Container/Container-SB/Container.xcodeproj/project.pbxproj b/Container/Container-SB/Container.xcodeproj/project.pbxproj index 9d75c94..f7d1a57 100644 --- a/Container/Container-SB/Container.xcodeproj/project.pbxproj +++ b/Container/Container-SB/Container.xcodeproj/project.pbxproj @@ -225,27 +225,27 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0820; - LastUpgradeCheck = 0900; + LastUpgradeCheck = 1120; ORGANIZATIONNAME = "Keith Harrison"; TargetAttributes = { 534452EE1E61B9E600649AF9 = { CreatedOnToolsVersion = 8.2.1; DevelopmentTeam = LCC2J94N44; - LastSwiftMigration = 0900; + LastSwiftMigration = 1020; ProvisioningStyle = Automatic; TestTargetID = 5367B2471E608B79001744C8; }; 5367B2471E608B79001744C8 = { CreatedOnToolsVersion = 8.2.1; DevelopmentTeam = LCC2J94N44; - LastSwiftMigration = 0900; + LastSwiftMigration = 1020; ProvisioningStyle = Automatic; }; }; }; buildConfigurationList = 5367B2431E608B79001744C8 /* Build configuration list for PBXProject "Container" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, @@ -347,8 +347,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.ContainerTests; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Container.app/Container"; }; name = Debug; @@ -362,8 +361,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.ContainerTests; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Container.app/Container"; }; name = Release; @@ -372,6 +370,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -381,6 +380,7 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -388,6 +388,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -428,6 +429,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -437,6 +439,7 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -444,6 +447,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -482,8 +486,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.Container; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -496,8 +499,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.Container; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Release; }; diff --git a/Container/Container-SB/Container.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Container/Container-SB/Container.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..d8ef532 --- /dev/null +++ b/Container/Container-SB/Container.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Container/Container-SB/Container.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Container/Container-SB/Container.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Container/Container-SB/Container.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Container/Container-SB/Container/Base.lproj/Main.storyboard b/Container/Container-SB/Container/Base.lproj/Main.storyboard index d6ac4c2..e5bdbfe 100644 --- a/Container/Container-SB/Container/Base.lproj/Main.storyboard +++ b/Container/Container-SB/Container/Base.lproj/Main.storyboard @@ -1,13 +1,11 @@ - - - - + + - - + + @@ -19,17 +17,17 @@ - - + + - + - + @@ -37,12 +35,12 @@ - + - + - + @@ -61,7 +59,7 @@ - + @@ -77,12 +75,12 @@ - - + + - + - + @@ -91,20 +89,20 @@ - + - - + + - - + @@ -141,17 +139,16 @@ - + - + - diff --git a/Container/Container-SB/Container/LocationCell.swift b/Container/Container-SB/Container/LocationCell.swift index 8fdb057..a2b4da9 100644 --- a/Container/Container-SB/Container/LocationCell.swift +++ b/Container/Container-SB/Container/LocationCell.swift @@ -2,8 +2,8 @@ // LocationCell.swift // Container // -// Created by Keith Harrison http://useyourloaf.com -// Copyright (c) 2017 Keith Harrison. All rights reserved. +// Created by Keith Harrison https://useyourloaf.com +// Copyright (c) 2017-2019 Keith Harrison. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: @@ -33,19 +33,9 @@ import UIKit -class LocationCell: UITableViewCell, ReusableIdentifier { - - @IBOutlet fileprivate weak var name: UILabel! - @IBOutlet fileprivate weak var coordinates: UILabel! - - override func awakeFromNib() { - super.awakeFromNib() - - if #available(iOS 10.0, *) { - name.adjustsFontForContentSizeCategory = true - coordinates.adjustsFontForContentSizeCategory = true - } - } +final class LocationCell: UITableViewCell, ReusableIdentifier { + @IBOutlet private var name: UILabel! + @IBOutlet private var coordinates: UILabel! } extension LocationCell: ConfigurableCell { diff --git a/Container/Container-SB/Container/LocationDataSource.swift b/Container/Container-SB/Container/LocationDataSource.swift index 7df4a4c..96ac6e3 100644 --- a/Container/Container-SB/Container/LocationDataSource.swift +++ b/Container/Container-SB/Container/LocationDataSource.swift @@ -33,10 +33,10 @@ import UIKit -class LocationDataSource: NSObject { +final class LocationDataSource: NSObject { - fileprivate let tableView: UITableView - fileprivate var locations = [Location]() + private let tableView: UITableView + private var locations = [Location]() init(tableView: UITableView, from path: String) { self.tableView = tableView diff --git a/Container/Container-SB/Container/LocationTableViewController.swift b/Container/Container-SB/Container/LocationTableViewController.swift index 304d82d..fa87ebb 100644 --- a/Container/Container-SB/Container/LocationTableViewController.swift +++ b/Container/Container-SB/Container/LocationTableViewController.swift @@ -33,11 +33,11 @@ import UIKit -protocol LocationProviderDelegate: class { +protocol LocationProviderDelegate: AnyObject { func didSelectLocation(_ location: Location) } -class LocationTableViewController: UITableViewController { +final class LocationTableViewController: UITableViewController { weak var delegate:LocationProviderDelegate? @@ -45,8 +45,8 @@ class LocationTableViewController: UITableViewController { override func viewDidLoad() { super.viewDidLoad() - tableView.rowHeight = UITableViewAutomaticDimension - tableView.estimatedRowHeight = 64.0 + tableView.rowHeight = UITableView.automaticDimension + tableView.estimatedRowHeight = UITableView.automaticDimension tableView.delegate = self if let plistPath = Bundle.main.path(forResource: "locations", ofType: "plist") { diff --git a/Container/Container-SB/Container/MapViewController.swift b/Container/Container-SB/Container/MapViewController.swift index 182c0a3..34ab9c7 100644 --- a/Container/Container-SB/Container/MapViewController.swift +++ b/Container/Container-SB/Container/MapViewController.swift @@ -34,9 +34,9 @@ import UIKit import MapKit -class MapViewController: UIViewController { +final class MapViewController: UIViewController { - @IBOutlet private weak var mapView: MKMapView! + @IBOutlet private var mapView: MKMapView! /// The zoom level to use when setting the span /// of the map region to show. Default is 10 degrees. @@ -58,7 +58,7 @@ class MapViewController: UIViewController { } private func centerMap(_ coordinate: CLLocationCoordinate2D) { - let span = MKCoordinateSpanMake(zoom, zoom) + let span = MKCoordinateSpan.init(latitudeDelta: zoom, longitudeDelta: zoom) let region = MKCoordinateRegion(center: coordinate, span: span) mapView.setRegion(region, animated: true) } diff --git a/Container/Container-SB/Container/MasterViewController.swift b/Container/Container-SB/Container/MasterViewController.swift index a55629f..13c91d1 100644 --- a/Container/Container-SB/Container/MasterViewController.swift +++ b/Container/Container-SB/Container/MasterViewController.swift @@ -2,8 +2,8 @@ // MasterViewController.swift // Container // -// Created by Keith Harrison http://useyourloaf.com -// Copyright (c) 2017 Keith Harrison. All rights reserved. +// Created by Keith Harrison https://useyourloaf.com +// Copyright (c) 2017-2019 Keith Harrison. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: @@ -33,15 +33,13 @@ import UIKit -class MasterViewController: UIViewController { - - @IBOutlet private weak var topStackView: UIStackView! - fileprivate var locationTableViewController: LocationTableViewController? - fileprivate var mapViewController: MapViewController? - - override func viewDidLoad() { - super.viewDidLoad() +final class MasterViewController: UIViewController { + @IBOutlet private var topStackView: UIStackView! + private var locationTableViewController: LocationTableViewController? + private var mapViewController: MapViewController? +// override func viewDidLoad() { +// super.viewDidLoad() // guard let locationController = childViewControllers.first as? LocationTableViewController else { // fatalError("Check storyboard for missing LocationTableViewController") // } @@ -53,12 +51,15 @@ class MasterViewController: UIViewController { // locationTableViewController = locationController // mapViewController = mapController // locationController.delegate = self +// } + override func viewWillLayoutSubviews() { + super.viewWillLayoutSubviews() topStackView.axis = axisForSize(view.bounds.size) } // Alternative to wiring up the interface in viewDidLoad (above) is to - // use prepare(for segue:sender:) which is still called for + // use prepare(for segue:sender:) which is still called for // embed segues. override func prepare(for segue: UIStoryboardSegue, sender: Any?) { @@ -73,18 +74,12 @@ class MasterViewController: UIViewController { } } - override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { - super.viewWillTransition(to: size, with: coordinator) - topStackView.axis = axisForSize(size) - } - - private func axisForSize(_ size: CGSize) -> UILayoutConstraintAxis { + private func axisForSize(_ size: CGSize) -> NSLayoutConstraint.Axis { return size.width > size.height ? .horizontal : .vertical } } extension MasterViewController: LocationProviderDelegate { - func didSelectLocation(_ location: Location) { mapViewController?.coordinate = location.coordinate } diff --git a/Container/Container-code/Container.xcodeproj/project.pbxproj b/Container/Container-code/Container.xcodeproj/project.pbxproj index 2291a49..53c988d 100644 --- a/Container/Container-code/Container.xcodeproj/project.pbxproj +++ b/Container/Container-code/Container.xcodeproj/project.pbxproj @@ -225,25 +225,27 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0820; - LastUpgradeCheck = 0820; + LastUpgradeCheck = 1020; ORGANIZATIONNAME = "Keith Harrison"; TargetAttributes = { 534452EE1E61B9E600649AF9 = { CreatedOnToolsVersion = 8.2.1; DevelopmentTeam = LCC2J94N44; + LastSwiftMigration = 1020; ProvisioningStyle = Automatic; TestTargetID = 5367B2471E608B79001744C8; }; 5367B2471E608B79001744C8 = { CreatedOnToolsVersion = 8.2.1; DevelopmentTeam = LCC2J94N44; + LastSwiftMigration = 1020; ProvisioningStyle = Automatic; }; }; }; buildConfigurationList = 5367B2431E608B79001744C8 /* Build configuration list for PBXProject "Container" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, @@ -345,7 +347,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.ContainerTests; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Container.app/Container"; }; name = Debug; @@ -359,7 +361,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.ContainerTests; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Container.app/Container"; }; name = Release; @@ -368,20 +370,29 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 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_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 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_IMPLICIT_RETAIN_SELF = 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; @@ -418,20 +429,29 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 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_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 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_IMPLICIT_RETAIN_SELF = 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; @@ -466,7 +486,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.Container; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -479,7 +499,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.Container; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 5.0; }; name = Release; }; diff --git a/Container/Container-code/Container.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Container/Container-code/Container.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..d8ef532 --- /dev/null +++ b/Container/Container-code/Container.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Container/Container-code/Container.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Container/Container-code/Container.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Container/Container-code/Container.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Container/Container-code/Container/Base.lproj/Main.storyboard b/Container/Container-code/Container/Base.lproj/Main.storyboard index 718a804..7a01916 100644 --- a/Container/Container-code/Container/Base.lproj/Main.storyboard +++ b/Container/Container-code/Container/Base.lproj/Main.storyboard @@ -1,12 +1,12 @@ - + - - + + @@ -35,7 +35,7 @@ - + @@ -51,7 +51,7 @@ - + @@ -65,20 +65,20 @@ - + - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DynamicText/DynamicText/Base.lproj/Main.storyboard b/DynamicText/DynamicText/Base.lproj/Main.storyboard index ff01357..2606c66 100644 --- a/DynamicText/DynamicText/Base.lproj/Main.storyboard +++ b/DynamicText/DynamicText/Base.lproj/Main.storyboard @@ -1,211 +1,260 @@ - - + + + - + + + + + + - + - - - - - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - - - - - - - - - - - - - - - - - - - - + + + + - - + - - - - - - - + + + + + + + + + + + + + + + + + + + + - + - + - - - - - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - - - - - - - - - - - - - - - - - - - - + + + + - - + + - + + + + + + + + + + + + + - + @@ -214,26 +263,63 @@ + - + - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - \ No newline at end of file + diff --git a/DynamicText/DynamicText/DynamicText-Prefix.pch b/DynamicText/DynamicText/DynamicText-Prefix.pch deleted file mode 100644 index 82a2bb4..0000000 --- a/DynamicText/DynamicText/DynamicText-Prefix.pch +++ /dev/null @@ -1,16 +0,0 @@ -// -// Prefix header -// -// The contents of this file are implicitly included at the beginning of every source file. -// - -#import - -#ifndef __IPHONE_5_0 -#warning "This project uses features only available in iOS SDK 5.0 and later." -#endif - -#ifdef __OBJC__ - #import - #import -#endif diff --git a/DynamicText/DynamicText/DynamicText-Info.plist b/DynamicText/DynamicText/Info.plist similarity index 89% rename from DynamicText/DynamicText/DynamicText-Info.plist rename to DynamicText/DynamicText/Info.plist index fce2f33..2348c0a 100644 --- a/DynamicText/DynamicText/DynamicText-Info.plist +++ b/DynamicText/DynamicText/Info.plist @@ -17,11 +17,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.2 + $(MARKETING_VERSION) CFBundleSignature ???? CFBundleVersion - 1.2 + $(CURRENT_PROJECT_VERSION) LSRequiresIPhoneOS UILaunchStoryboardName @@ -37,6 +37,7 @@ UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight + UIInterfaceOrientationPortraitUpsideDown diff --git a/DynamicText/DynamicText/UIFont+UYLScaledFont.h b/DynamicText/DynamicText/UIFont+UYLScaledFont.h index 3dc52dd..3704d97 100644 --- a/DynamicText/DynamicText/UIFont+UYLScaledFont.h +++ b/DynamicText/DynamicText/UIFont+UYLScaledFont.h @@ -1,9 +1,4 @@ -// -// UIFont+UYLScaledFont.h -// DynamicText -// -// Created by Keith Harrison http://useyourloaf.com -// Copyright (c) 2013 Keith Harrison. All rights reserved. +// Copyright (c) 2013-2021 Keith Harrison. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: @@ -31,11 +26,11 @@ // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -#import +@import UIKit; @interface UIFont (UYLScaledFont) -// +uylPreferredFontForTextStyle:scale: +// +preferredFontForTextStyle:scale: // // Return a UIFont object for the specified text style that is scaled by the // speficied scale factor. @@ -45,6 +40,6 @@ // The scaleFactor modifies the default point size of the text style. So for // a font that is twice the default size specify a scaleFactor of 2.0. -+ (UIFont *)uylPreferredFontForTextStyle:(NSString *)style scale:(CGFloat)scaleFactor; ++ (UIFont *)preferredFontForTextStyle:(NSString *)style scale:(CGFloat)scaleFactor; @end diff --git a/DynamicText/DynamicText/UIFont+UYLScaledFont.m b/DynamicText/DynamicText/UIFont+UYLScaledFont.m index 0efddd2..781264b 100644 --- a/DynamicText/DynamicText/UIFont+UYLScaledFont.m +++ b/DynamicText/DynamicText/UIFont+UYLScaledFont.m @@ -1,9 +1,4 @@ -// -// UIFont+UYLScaledFont.m -// DynamicText -// -// Created by Keith Harrison http://useyourloaf.com -// Copyright (c) 2013 Keith Harrison. All rights reserved. +// Copyright (c) 2013-2021 Keith Harrison. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: @@ -35,12 +30,10 @@ @implementation UIFont (UYLScaledFont) -+ (UIFont *)uylPreferredFontForTextStyle:(NSString *)style scale:(CGFloat)scaleFactor ++ (UIFont *)preferredFontForTextStyle:(NSString *)style scale:(CGFloat)scaleFactor { - UIFontDescriptor *descriptor = [UIFontDescriptor preferredFontDescriptorWithTextStyle:style]; - CGFloat pointSize = descriptor.pointSize * scaleFactor; - UIFont *font = [UIFont fontWithDescriptor:descriptor size:pointSize]; - return font; + UIFont *font = [UIFont preferredFontForTextStyle:style]; + return [font fontWithSize:font.pointSize * scaleFactor]; } @end diff --git a/DynamicText/DynamicText/UYLAppDelegate.h b/DynamicText/DynamicText/UYLAppDelegate.h index 5efc6de..920cfe0 100644 --- a/DynamicText/DynamicText/UYLAppDelegate.h +++ b/DynamicText/DynamicText/UYLAppDelegate.h @@ -1,9 +1,4 @@ -// -// UYLAppDelegate.h -// DynamicText -// -// Created by Keith Harrison http://useyourloaf.com -// Copyright (c) 2013 Keith Harrison. All rights reserved. +// Copyright (c) 2013-2021 Keith Harrison. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: @@ -31,10 +26,8 @@ // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -#import +@import UIKit; @interface UYLAppDelegate : UIResponder - @property (strong, nonatomic) UIWindow *window; - @end diff --git a/DynamicText/DynamicText/UYLAppDelegate.m b/DynamicText/DynamicText/UYLAppDelegate.m index 59ba911..5a307a4 100644 --- a/DynamicText/DynamicText/UYLAppDelegate.m +++ b/DynamicText/DynamicText/UYLAppDelegate.m @@ -1,9 +1,4 @@ -// -// UYLAppDelegate.m -// DynamicText -// -// Created by Keith Harrison http://useyourloaf.com -// Copyright (c) 2013 Keith Harrison. All rights reserved. +// Copyright (c) 2013-2021 Keith Harrison. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: @@ -33,5 +28,4 @@ #import "UYLAppDelegate.h" @implementation UYLAppDelegate - -@end \ No newline at end of file +@end diff --git a/DynamicText/DynamicText/UYLScaledTextStyleViewController.h b/DynamicText/DynamicText/UYLScaledTextStyleViewController.h index 3c408b4..986a63c 100644 --- a/DynamicText/DynamicText/UYLScaledTextStyleViewController.h +++ b/DynamicText/DynamicText/UYLScaledTextStyleViewController.h @@ -1,13 +1,32 @@ +// Copyright © 2021 Keith Harrison. All rights reserved. // -// UYLScaledTextStyleViewController.h -// DynamicText +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: // -// Created by Keith Harrison on 18/12/2013. -// Copyright (c) 2013 Keith Harrison. All rights reserved. +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. // +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. -#import "UYLTextStyleViewController.h" - -@interface UYLScaledTextStyleViewController : UYLTextStyleViewController +@import UIKit; +@interface UYLScaledTextStyleViewController : UIViewController @end diff --git a/DynamicText/DynamicText/UYLScaledTextStyleViewController.m b/DynamicText/DynamicText/UYLScaledTextStyleViewController.m index 5214e5e..b706e52 100644 --- a/DynamicText/DynamicText/UYLScaledTextStyleViewController.m +++ b/DynamicText/DynamicText/UYLScaledTextStyleViewController.m @@ -9,22 +9,56 @@ #import "UYLScaledTextStyleViewController.h" #import "UIFont+UYLScaledFont.h" +@interface UYLScaledTextStyleViewController () +@property (strong, nonatomic) IBOutletCollection(UILabel) NSArray *allLabels; + +@property (weak, nonatomic) IBOutlet UILabel *title1Label; +@property (weak, nonatomic) IBOutlet UILabel *title2Label; +@property (weak, nonatomic) IBOutlet UILabel *title3Label; +@property (weak, nonatomic) IBOutlet UILabel *headlineLabel; +@property (weak, nonatomic) IBOutlet UILabel *subheadLabel; +@property (weak, nonatomic) IBOutlet UILabel *bodyLabel; +@property (weak, nonatomic) IBOutlet UILabel *calloutLabel; +@property (weak, nonatomic) IBOutlet UILabel *footnoteLabel; +@property (weak, nonatomic) IBOutlet UILabel *caption1Label; +@property (weak, nonatomic) IBOutlet UILabel *caption2Label; +@end + @implementation UYLScaledTextStyleViewController #pragma mark - #pragma mark === View Life Cycle === #pragma mark - -- (void)configureView -{ +- (void)viewDidLoad { + [super viewDidLoad]; + [self configureView]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(updateTextStyles:) + name:UIContentSizeCategoryDidChangeNotification + object:nil]; +} + +- (void)configureView { CGFloat scaleFactor = 2.0; - self.textSizeLabel.text = [[UIApplication sharedApplication] preferredContentSizeCategory]; - self.headlineLabel.font = [UIFont uylPreferredFontForTextStyle:UIFontTextStyleHeadline scale:scaleFactor]; - self.subheadLabel.font = [UIFont uylPreferredFontForTextStyle:UIFontTextStyleSubheadline scale:scaleFactor]; - self.bodyLabel.font = [UIFont uylPreferredFontForTextStyle:UIFontTextStyleBody scale:scaleFactor]; - self.caption1Label.font = [UIFont uylPreferredFontForTextStyle:UIFontTextStyleCaption1 scale:scaleFactor]; - self.caption2Label.font = [UIFont uylPreferredFontForTextStyle:UIFontTextStyleCaption2 scale:scaleFactor]; - self.footnoteLabel.font = [UIFont uylPreferredFontForTextStyle:UIFontTextStyleFootnote scale:scaleFactor]; + + self.title1Label.font = [UIFont preferredFontForTextStyle:UIFontTextStyleTitle1 scale:scaleFactor]; + self.title2Label.font = [UIFont preferredFontForTextStyle:UIFontTextStyleTitle2 scale:scaleFactor]; + self.title3Label.font = [UIFont preferredFontForTextStyle:UIFontTextStyleTitle3 scale:scaleFactor]; + self.headlineLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline scale:scaleFactor]; + self.subheadLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline scale:scaleFactor]; + self.bodyLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody scale:scaleFactor]; + self.calloutLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleCallout scale:scaleFactor]; + self.footnoteLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleFootnote scale:scaleFactor]; + self.caption1Label.font = [UIFont preferredFontForTextStyle:UIFontTextStyleCaption1 scale:scaleFactor]; + self.caption2Label.font = [UIFont preferredFontForTextStyle:UIFontTextStyleCaption2 scale:scaleFactor]; } +#pragma mark - +#pragma mark === Notification Methods === +#pragma mark - + +- (void)updateTextStyles:(NSNotification *)notification { + [self configureView]; +} @end diff --git a/DynamicText/DynamicText/UYLTextStyleViewController.h b/DynamicText/DynamicText/UYLTextStyleViewController.h index 88bbcef..6c64a99 100644 --- a/DynamicText/DynamicText/UYLTextStyleViewController.h +++ b/DynamicText/DynamicText/UYLTextStyleViewController.h @@ -1,9 +1,4 @@ -// -// UYLTableViewController.h -// DynamicText -// -// Created by Keith Harrison http://useyourloaf.com -// Copyright (c) 2013 Keith Harrison. All rights reserved. +// Copyright (c) 2013-2021 Keith Harrison. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: @@ -30,17 +25,7 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#import +@import UIKit; @interface UYLTextStyleViewController : UIViewController - -@property (weak, nonatomic) IBOutlet UILabel *textSizeLabel; -@property (weak, nonatomic) IBOutlet UILabel *headlineLabel; -@property (weak, nonatomic) IBOutlet UILabel *subheadLabel; -@property (weak, nonatomic) IBOutlet UILabel *bodyLabel; -@property (weak, nonatomic) IBOutlet UILabel *caption1Label; -@property (weak, nonatomic) IBOutlet UILabel *caption2Label; -@property (weak, nonatomic) IBOutlet UILabel *footnoteLabel; - @end diff --git a/DynamicText/DynamicText/UYLTextStyleViewController.m b/DynamicText/DynamicText/UYLTextStyleViewController.m index 1e3d0ab..98b752d 100644 --- a/DynamicText/DynamicText/UYLTextStyleViewController.m +++ b/DynamicText/DynamicText/UYLTextStyleViewController.m @@ -1,82 +1,83 @@ +// Copyright © 2013-2021 Keith Harrison. All rights reserved. // -// UYLTableViewController.m -// DynamicText +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: // -// Created by Keith Harrison http://useyourloaf.com -// Copyright (c) 2013 Keith Harrison. All rights reserved. +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. // -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. // -// Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. +// 3. Neither the name of the copyright holder nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. // -// Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// Neither the name of Keith Harrison nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ''AS IS'' AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. #import "UYLTextStyleViewController.h" +@interface UYLTextStyleViewController () +@property (strong, nonatomic) IBOutletCollection(UILabel) NSArray *allLabels; + +@property (weak, nonatomic) IBOutlet UILabel *title1Label; +@property (weak, nonatomic) IBOutlet UILabel *title2Label; +@property (weak, nonatomic) IBOutlet UILabel *title3Label; +@property (weak, nonatomic) IBOutlet UILabel *headlineLabel; +@property (weak, nonatomic) IBOutlet UILabel *subheadLabel; +@property (weak, nonatomic) IBOutlet UILabel *bodyLabel; +@property (weak, nonatomic) IBOutlet UILabel *calloutLabel; +@property (weak, nonatomic) IBOutlet UILabel *footnoteLabel; +@property (weak, nonatomic) IBOutlet UILabel *caption1Label; +@property (weak, nonatomic) IBOutlet UILabel *caption2Label; +@end + @implementation UYLTextStyleViewController #pragma mark - #pragma mark === View Life Cycle === #pragma mark - -- (void)viewDidLoad -{ - [super viewDidLoad]; - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(didChangePreferredContentSize:) - name:UIContentSizeCategoryDidChangeNotification - object:nil]; -} - -- (void)viewDidAppear:(BOOL)animated -{ - [super viewDidAppear:animated]; - [self configureView]; +- (void)viewDidLoad { + [super viewDidLoad]; + if (@available(iOS 10, *)) { + for (UILabel *label in self.allLabels) { + label.adjustsFontForContentSizeCategory = YES; + } + } else { + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(updateTextStyles:) + name:UIContentSizeCategoryDidChangeNotification + object:nil]; + } } -- (void)dealloc -{ - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} +#pragma mark - +#pragma mark === Notification Methods === +#pragma mark - -- (void)configureView -{ - self.textSizeLabel.text = [[UIApplication sharedApplication] preferredContentSizeCategory]; +- (void)updateTextStyles:(NSNotification *)notification { + self.title1Label.font = [UIFont preferredFontForTextStyle:UIFontTextStyleTitle1]; + self.title2Label.font = [UIFont preferredFontForTextStyle:UIFontTextStyleTitle2]; + self.title3Label.font = [UIFont preferredFontForTextStyle:UIFontTextStyleTitle3]; self.headlineLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline]; self.subheadLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline]; self.bodyLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody]; + self.calloutLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleCallout]; + self.footnoteLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleFootnote]; self.caption1Label.font = [UIFont preferredFontForTextStyle:UIFontTextStyleCaption1]; self.caption2Label.font = [UIFont preferredFontForTextStyle:UIFontTextStyleCaption2]; - self.footnoteLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleFootnote]; -} - -#pragma mark - -#pragma mark === Notification Methods === -#pragma mark - - -- (void)didChangePreferredContentSize:(NSNotification *)notification -{ - [self configureView]; } @end diff --git a/DynamicText/DynamicText/main.m b/DynamicText/DynamicText/main.m index 94553a1..0530728 100644 --- a/DynamicText/DynamicText/main.m +++ b/DynamicText/DynamicText/main.m @@ -1,9 +1,4 @@ -// -// main.m -// DynamicText -// -// Created by Keith Harrison http://useyourloaf.com -// Copyright (c) 2013 Keith Harrison. All rights reserved. +// Copyright (c) 2013-2021 Keith Harrison. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: diff --git a/DynamicText/DynamicTextSwift/AppDelegate.swift b/DynamicText/DynamicTextSwift/AppDelegate.swift new file mode 100644 index 0000000..972061e --- /dev/null +++ b/DynamicText/DynamicTextSwift/AppDelegate.swift @@ -0,0 +1,33 @@ +// Copyright © 2021 Keith Harrison. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import UIKit + +@main +class AppDelegate: UIResponder, UIApplicationDelegate { +} diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/AccentColor.colorset/Contents.json b/DynamicText/DynamicTextSwift/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..9b711cb --- /dev/null +++ b/DynamicText/DynamicTextSwift/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,15 @@ +{ + "colors" : [ + { + "color" : { + "platform" : "ios", + "reference" : "systemBlueColor" + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/Contents.json b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..1120389 --- /dev/null +++ b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,116 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "icon-40.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "icon-60.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "icon-29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "icon-29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "icon-40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "icon-120.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "icon-60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "icon-180.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "icon-20.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "icon-41.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "icon-29.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "icon-29@2x-1.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "icon-42.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "icon-40@2x-1.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "icon-76.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "icon-76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "icon-167.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "icon-1024.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-1024.png b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-1024.png new file mode 100644 index 0000000..4a1a9de Binary files /dev/null and b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-1024.png differ diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-120.png b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-120.png new file mode 100644 index 0000000..d4b42eb Binary files /dev/null and b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-120.png differ diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-167.png b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-167.png new file mode 100644 index 0000000..0a5ec66 Binary files /dev/null and b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-167.png differ diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-180.png b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-180.png new file mode 100644 index 0000000..e943cc3 Binary files /dev/null and b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-180.png differ diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-20.png b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-20.png new file mode 100644 index 0000000..3c16adf Binary files /dev/null and b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-20.png differ diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-29.png b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-29.png new file mode 100644 index 0000000..b918cea Binary files /dev/null and b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-29.png differ diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-29@2x-1.png b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-29@2x-1.png new file mode 100644 index 0000000..3c599a5 Binary files /dev/null and b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-29@2x-1.png differ diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png new file mode 100644 index 0000000..7759c83 Binary files /dev/null and b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png differ diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png new file mode 100644 index 0000000..f32646a Binary files /dev/null and b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png differ diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-40.png b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-40.png new file mode 100644 index 0000000..c663546 Binary files /dev/null and b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-40.png differ diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-40@2x-1.png b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-40@2x-1.png new file mode 100644 index 0000000..afcf538 Binary files /dev/null and b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-40@2x-1.png differ diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png new file mode 100644 index 0000000..611f339 Binary files /dev/null and b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png differ diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-41.png b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-41.png new file mode 100644 index 0000000..c663546 Binary files /dev/null and b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-41.png differ diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-42.png b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-42.png new file mode 100644 index 0000000..c663546 Binary files /dev/null and b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-42.png differ diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-60.png b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-60.png new file mode 100644 index 0000000..fd2eff6 Binary files /dev/null and b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-60.png differ diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png new file mode 100644 index 0000000..515d2b6 Binary files /dev/null and b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png differ diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-76.png b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-76.png new file mode 100644 index 0000000..90d600a Binary files /dev/null and b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-76.png differ diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png new file mode 100644 index 0000000..6b529b8 Binary files /dev/null and b/DynamicText/DynamicTextSwift/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png differ diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/Contents.json b/DynamicText/DynamicTextSwift/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/DynamicText/DynamicTextSwift/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/Tab Bar/First.imageset/Contents.json b/DynamicText/DynamicTextSwift/Assets.xcassets/Tab Bar/First.imageset/Contents.json new file mode 100644 index 0000000..f7afaee --- /dev/null +++ b/DynamicText/DynamicTextSwift/Assets.xcassets/Tab Bar/First.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "first30.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "first60.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "first90.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/Tab Bar/First.imageset/first30.png b/DynamicText/DynamicTextSwift/Assets.xcassets/Tab Bar/First.imageset/first30.png new file mode 100644 index 0000000..e7f0902 Binary files /dev/null and b/DynamicText/DynamicTextSwift/Assets.xcassets/Tab Bar/First.imageset/first30.png differ diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/Tab Bar/First.imageset/first60.png b/DynamicText/DynamicTextSwift/Assets.xcassets/Tab Bar/First.imageset/first60.png new file mode 100644 index 0000000..975a75f Binary files /dev/null and b/DynamicText/DynamicTextSwift/Assets.xcassets/Tab Bar/First.imageset/first60.png differ diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/Tab Bar/First.imageset/first90.png b/DynamicText/DynamicTextSwift/Assets.xcassets/Tab Bar/First.imageset/first90.png new file mode 100644 index 0000000..92341c2 Binary files /dev/null and b/DynamicText/DynamicTextSwift/Assets.xcassets/Tab Bar/First.imageset/first90.png differ diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/Tab Bar/Second.imageset/Contents.json b/DynamicText/DynamicTextSwift/Assets.xcassets/Tab Bar/Second.imageset/Contents.json new file mode 100644 index 0000000..fd58914 --- /dev/null +++ b/DynamicText/DynamicTextSwift/Assets.xcassets/Tab Bar/Second.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "second30.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "second60.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "second90.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/Tab Bar/Second.imageset/second30.png b/DynamicText/DynamicTextSwift/Assets.xcassets/Tab Bar/Second.imageset/second30.png new file mode 100644 index 0000000..728d7f6 Binary files /dev/null and b/DynamicText/DynamicTextSwift/Assets.xcassets/Tab Bar/Second.imageset/second30.png differ diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/Tab Bar/Second.imageset/second60.png b/DynamicText/DynamicTextSwift/Assets.xcassets/Tab Bar/Second.imageset/second60.png new file mode 100644 index 0000000..9cd7cb3 Binary files /dev/null and b/DynamicText/DynamicTextSwift/Assets.xcassets/Tab Bar/Second.imageset/second60.png differ diff --git a/DynamicText/DynamicTextSwift/Assets.xcassets/Tab Bar/Second.imageset/second90.png b/DynamicText/DynamicTextSwift/Assets.xcassets/Tab Bar/Second.imageset/second90.png new file mode 100644 index 0000000..6170461 Binary files /dev/null and b/DynamicText/DynamicTextSwift/Assets.xcassets/Tab Bar/Second.imageset/second90.png differ diff --git a/DynamicText/DynamicTextSwift/Base.lproj/LaunchScreen.storyboard b/DynamicText/DynamicTextSwift/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..e16eba7 --- /dev/null +++ b/DynamicText/DynamicTextSwift/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DynamicText/DynamicTextSwift/Base.lproj/Main.storyboard b/DynamicText/DynamicTextSwift/Base.lproj/Main.storyboard new file mode 100644 index 0000000..52c8196 --- /dev/null +++ b/DynamicText/DynamicTextSwift/Base.lproj/Main.storyboard @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DynamicText/DynamicTextSwift/Info.plist b/DynamicText/DynamicTextSwift/Info.plist new file mode 100644 index 0000000..5b531f7 --- /dev/null +++ b/DynamicText/DynamicTextSwift/Info.plist @@ -0,0 +1,66 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + UIApplicationSupportsIndirectInputEvents + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/DynamicText/DynamicTextSwift/SceneDelegate.swift b/DynamicText/DynamicTextSwift/SceneDelegate.swift new file mode 100644 index 0000000..8b6fc47 --- /dev/null +++ b/DynamicText/DynamicTextSwift/SceneDelegate.swift @@ -0,0 +1,33 @@ +// Copyright © 2021 Keith Harrison. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import UIKit + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + var window: UIWindow? +} diff --git a/DynamicText/DynamicTextSwift/UIFont+Extension.swift b/DynamicText/DynamicTextSwift/UIFont+Extension.swift new file mode 100644 index 0000000..3174e89 --- /dev/null +++ b/DynamicText/DynamicTextSwift/UIFont+Extension.swift @@ -0,0 +1,36 @@ +// Copyright © 2021 Keith Harrison. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import UIKit + +extension UIFont { + static func preferredFont(forTextStyle style: UIFont.TextStyle, scaleFactor: CGFloat) -> UIFont { + let font = UIFont.preferredFont(forTextStyle: style) + return font.withSize(font.pointSize * scaleFactor) + } +} diff --git a/DynamicText/DynamicTextSwift/UYLScaledTextStyleViewController.swift b/DynamicText/DynamicTextSwift/UYLScaledTextStyleViewController.swift new file mode 100644 index 0000000..9812038 --- /dev/null +++ b/DynamicText/DynamicTextSwift/UYLScaledTextStyleViewController.swift @@ -0,0 +1,68 @@ +// Copyright © 2021 Keith Harrison. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import UIKit + +final class UYLScaledTextStyleViewController: UIViewController { + @IBOutlet private var allLabels: [UILabel]! + @IBOutlet private var title1Label: UILabel! + @IBOutlet private var title2Label: UILabel! + @IBOutlet private var title3Label: UILabel! + @IBOutlet private var headlineLabel: UILabel! + @IBOutlet private var subheadLabel: UILabel! + @IBOutlet private var bodyLabel: UILabel! + @IBOutlet private var calloutLabel: UILabel! + @IBOutlet private var footnoteLabel: UILabel! + @IBOutlet private var caption1Label: UILabel! + @IBOutlet private var caption2Label: UILabel! + + override func viewDidLoad() { + super.viewDidLoad() + configureView() + NotificationCenter.default.addObserver(self, selector: #selector(updateTextStyles(_:)), name: UIContentSizeCategory.didChangeNotification, object: nil) + } + + @objc private func updateTextStyles(_ notification: Notification) { + configureView() + } + + private func configureView() { + let scaleFactor: CGFloat = 2.0 + + title1Label.font = UIFont.preferredFont(forTextStyle: .title1, scaleFactor: scaleFactor) + title2Label.font = UIFont.preferredFont(forTextStyle: .title2, scaleFactor: scaleFactor) + title3Label.font = UIFont.preferredFont(forTextStyle: .title3, scaleFactor: scaleFactor) + headlineLabel.font = UIFont.preferredFont(forTextStyle: .headline, scaleFactor: scaleFactor) + subheadLabel.font = UIFont.preferredFont(forTextStyle: .subheadline, scaleFactor: scaleFactor) + bodyLabel.font = UIFont.preferredFont(forTextStyle: .body, scaleFactor: scaleFactor) + calloutLabel.font = UIFont.preferredFont(forTextStyle: .callout, scaleFactor: scaleFactor) + footnoteLabel.font = UIFont.preferredFont(forTextStyle: .footnote, scaleFactor: scaleFactor) + caption1Label.font = UIFont.preferredFont(forTextStyle: .caption1, scaleFactor: scaleFactor) + caption2Label.font = UIFont.preferredFont(forTextStyle: .caption2, scaleFactor: scaleFactor) + } +} diff --git a/DynamicText/DynamicTextSwift/UYLTextStyleViewController.swift b/DynamicText/DynamicTextSwift/UYLTextStyleViewController.swift new file mode 100644 index 0000000..ecff87a --- /dev/null +++ b/DynamicText/DynamicTextSwift/UYLTextStyleViewController.swift @@ -0,0 +1,68 @@ +// Copyright © 2021 Keith Harrison. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import UIKit + +final class UYLTextStyleViewController: UIViewController { + @IBOutlet private var allLabels: [UILabel]! + @IBOutlet private weak var title1Label: UILabel! + @IBOutlet private weak var title2Label: UILabel! + @IBOutlet private weak var title3Label: UILabel! + @IBOutlet private weak var headlineLabel: UILabel! + @IBOutlet private weak var subheadLabel: UILabel! + @IBOutlet private weak var bodyLabel: UILabel! + @IBOutlet private weak var calloutLabel: UILabel! + @IBOutlet private weak var footnoteLabel: UILabel! + @IBOutlet private weak var caption1Label: UILabel! + @IBOutlet private weak var caption2Label: UILabel! + + override func viewDidLoad() { + super.viewDidLoad() + + if #available(iOS 10, *) { + allLabels.forEach { + $0.adjustsFontForContentSizeCategory = true + } + } else { + NotificationCenter.default.addObserver(self, selector: #selector(updateTextStyles(_:)), name: UIContentSizeCategory.didChangeNotification, object: nil) + } + } + + @objc private func updateTextStyles(_ notification: Notification) { + title1Label.font = UIFont.preferredFont(forTextStyle: .title1) + title2Label.font = UIFont.preferredFont(forTextStyle: .title2) + title3Label.font = UIFont.preferredFont(forTextStyle: .title3) + headlineLabel.font = UIFont.preferredFont(forTextStyle: .headline) + subheadLabel.font = UIFont.preferredFont(forTextStyle: .subheadline) + bodyLabel.font = UIFont.preferredFont(forTextStyle: .body) + calloutLabel.font = UIFont.preferredFont(forTextStyle: .callout) + footnoteLabel.font = UIFont.preferredFont(forTextStyle: .footnote) + caption1Label.font = UIFont.preferredFont(forTextStyle: .caption1) + caption2Label.font = UIFont.preferredFont(forTextStyle: .caption2) + } +} diff --git a/DynamicText/README.md b/DynamicText/README.md index 79cd491..c1e8637 100644 --- a/DynamicText/README.md +++ b/DynamicText/README.md @@ -5,7 +5,7 @@ This is a example project showing how to respond to the user changing the preferred text size. -**Minimum deployment target is now iOS 8.0 using Xcode 8** +**Minimum deployment target is now iOS 9.0 using Xcode 12** The `UYLTextStyleViewController` shows the standard way to listen for and respond to changes to the users preferred text size using the @@ -22,10 +22,12 @@ category of `UIFont` for this purpose. For further details see the following blog post: -+ [Scaling Synamic Type With Font Descriptors](https://useyourloaf.com/blog/scaling-dynamic-type-with-font-descriptors/) ++ [Scaling Dynamic Type With Font Descriptors](https://useyourloaf.com/blog/scaling-dynamic-type-with-font-descriptors/) ## History +Version 1.4 19 May 2021 Updated for Xcode 12 and Swift +Version 1.3 11 January 2020 Updated for Xcode 11 Version 1.2 14 August 2017 Updated for Xcode 8 and iOS 10 Version 1.1 30 December 2013 Added UYLScaledTextViewController Version 1.0 06 October 2013 Initial version. diff --git a/DynamicWebKit/DynamicWebKit.xcodeproj/project.pbxproj b/DynamicWebKit/DynamicWebKit.xcodeproj/project.pbxproj index 6d742f6..aa1b646 100644 --- a/DynamicWebKit/DynamicWebKit.xcodeproj/project.pbxproj +++ b/DynamicWebKit/DynamicWebKit.xcodeproj/project.pbxproj @@ -8,25 +8,34 @@ /* Begin PBXBuildFile section */ 53A2B53B1F94DBE500095FAD /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53A2B53A1F94DBE500095FAD /* AppDelegate.swift */; }; - 53A2B53D1F94DBE500095FAD /* HTMLViewControler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53A2B53C1F94DBE500095FAD /* HTMLViewControler.swift */; }; + 53A2B53D1F94DBE500095FAD /* WebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53A2B53C1F94DBE500095FAD /* WebViewController.swift */; }; 53A2B5401F94DBE500095FAD /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 53A2B53E1F94DBE500095FAD /* Main.storyboard */; }; 53A2B5421F94DBE500095FAD /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 53A2B5411F94DBE500095FAD /* Assets.xcassets */; }; 53A2B5451F94DBE500095FAD /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 53A2B5431F94DBE500095FAD /* LaunchScreen.storyboard */; }; - 53A2B54D1F94DC9700095FAD /* readme.html in Resources */ = {isa = PBXBuildFile; fileRef = 53A2B54C1F94DC9700095FAD /* readme.html */; }; + 53A2B54D1F94DC9700095FAD /* default.html in Resources */ = {isa = PBXBuildFile; fileRef = 53A2B54C1F94DC9700095FAD /* default.html */; }; 53A2B54F1F94DD8200095FAD /* stylesheet.css in Resources */ = {isa = PBXBuildFile; fileRef = 53A2B54E1F94DD8200095FAD /* stylesheet.css */; }; + 53E34E032403D85700EE575E /* 001-dark.png in Resources */ = {isa = PBXBuildFile; fileRef = 53E34E022403D67600EE575E /* 001-dark.png */; }; + 53E34E042403D85A00EE575E /* 001-dark@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 53E34DFF2403D67600EE575E /* 001-dark@2x.png */; }; + 53E34E052403D85E00EE575E /* 001.png in Resources */ = {isa = PBXBuildFile; fileRef = 53E34E012403D67600EE575E /* 001.png */; }; + 53E34E062403D86100EE575E /* 001@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 53E34E002403D67600EE575E /* 001@2x.png */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 53A2B5371F94DBE500095FAD /* DynamicWebKit.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DynamicWebKit.app; sourceTree = BUILT_PRODUCTS_DIR; }; 53A2B53A1F94DBE500095FAD /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 53A2B53C1F94DBE500095FAD /* HTMLViewControler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTMLViewControler.swift; sourceTree = ""; }; + 53A2B53C1F94DBE500095FAD /* WebViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebViewController.swift; sourceTree = ""; }; 53A2B53F1F94DBE500095FAD /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 53A2B5411F94DBE500095FAD /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 53A2B5441F94DBE500095FAD /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 53A2B5461F94DBE500095FAD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 53A2B54C1F94DC9700095FAD /* readme.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = readme.html; sourceTree = ""; }; + 53A2B54C1F94DC9700095FAD /* default.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = default.html; sourceTree = ""; }; 53A2B54E1F94DD8200095FAD /* stylesheet.css */ = {isa = PBXFileReference; lastKnownFileType = text.css; path = stylesheet.css; sourceTree = ""; }; 53A2B5501F94F14800095FAD /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + 53C25DE92617A45300E8BC02 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; + 53E34DFF2403D67600EE575E /* 001-dark@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "001-dark@2x.png"; sourceTree = ""; }; + 53E34E002403D67600EE575E /* 001@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "001@2x.png"; sourceTree = ""; }; + 53E34E012403D67600EE575E /* 001.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 001.png; sourceTree = ""; }; + 53E34E022403D67600EE575E /* 001-dark.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "001-dark.png"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -46,6 +55,7 @@ 53A2B5501F94F14800095FAD /* README.md */, 53A2B5391F94DBE500095FAD /* DynamicWebKit */, 53A2B5381F94DBE500095FAD /* Products */, + 53C25DE82617A45300E8BC02 /* Frameworks */, ); sourceTree = ""; }; @@ -61,9 +71,8 @@ isa = PBXGroup; children = ( 53A2B53A1F94DBE500095FAD /* AppDelegate.swift */, - 53A2B53C1F94DBE500095FAD /* HTMLViewControler.swift */, - 53A2B54C1F94DC9700095FAD /* readme.html */, - 53A2B54E1F94DD8200095FAD /* stylesheet.css */, + 53A2B53C1F94DBE500095FAD /* WebViewController.swift */, + 53E34DFE2403D58400EE575E /* HTML */, 53A2B53E1F94DBE500095FAD /* Main.storyboard */, 53A2B5411F94DBE500095FAD /* Assets.xcassets */, 53A2B5431F94DBE500095FAD /* LaunchScreen.storyboard */, @@ -72,6 +81,27 @@ path = DynamicWebKit; sourceTree = ""; }; + 53C25DE82617A45300E8BC02 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 53C25DE92617A45300E8BC02 /* WebKit.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 53E34DFE2403D58400EE575E /* HTML */ = { + isa = PBXGroup; + children = ( + 53A2B54C1F94DC9700095FAD /* default.html */, + 53E34E022403D67600EE575E /* 001-dark.png */, + 53E34DFF2403D67600EE575E /* 001-dark@2x.png */, + 53E34E012403D67600EE575E /* 001.png */, + 53E34E002403D67600EE575E /* 001@2x.png */, + 53A2B54E1F94DD8200095FAD /* stylesheet.css */, + ); + path = HTML; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -99,11 +129,12 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0900; - LastUpgradeCheck = 0900; + LastUpgradeCheck = 1240; ORGANIZATIONNAME = "Keith Harrison"; TargetAttributes = { 53A2B5361F94DBE500095FAD = { CreatedOnToolsVersion = 9.0; + LastSwiftMigration = 1120; ProvisioningStyle = Automatic; }; }; @@ -131,10 +162,14 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 53A2B54D1F94DC9700095FAD /* readme.html in Resources */, + 53E34E042403D85A00EE575E /* 001-dark@2x.png in Resources */, + 53A2B54D1F94DC9700095FAD /* default.html in Resources */, 53A2B54F1F94DD8200095FAD /* stylesheet.css in Resources */, + 53E34E052403D85E00EE575E /* 001.png in Resources */, 53A2B5451F94DBE500095FAD /* LaunchScreen.storyboard in Resources */, + 53E34E032403D85700EE575E /* 001-dark.png in Resources */, 53A2B5421F94DBE500095FAD /* Assets.xcassets in Resources */, + 53E34E062403D86100EE575E /* 001@2x.png in Resources */, 53A2B5401F94DBE500095FAD /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -146,7 +181,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 53A2B53D1F94DBE500095FAD /* HTMLViewControler.swift in Sources */, + 53A2B53D1F94DBE500095FAD /* WebViewController.swift in Sources */, 53A2B53B1F94DBE500095FAD /* AppDelegate.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -187,6 +222,7 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -194,8 +230,10 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -221,7 +259,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -244,6 +282,7 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -251,8 +290,10 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -272,7 +313,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; @@ -290,7 +331,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.DynamicWebKit; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -305,7 +346,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.DynamicWebKit; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; diff --git a/DynamicWebKit/DynamicWebKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/DynamicWebKit/DynamicWebKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..df636b7 --- /dev/null +++ b/DynamicWebKit/DynamicWebKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/DynamicWebKit/DynamicWebKit.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/DynamicWebKit/DynamicWebKit.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/DynamicWebKit/DynamicWebKit.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/DynamicWebKit/DynamicWebKit/Assets.xcassets/AppIcon.appiconset/Contents.json b/DynamicWebKit/DynamicWebKit/Assets.xcassets/AppIcon.appiconset/Contents.json index 1d060ed..9221b9b 100644 --- a/DynamicWebKit/DynamicWebKit/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/DynamicWebKit/DynamicWebKit/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -2,92 +2,97 @@ "images" : [ { "idiom" : "iphone", - "size" : "20x20", - "scale" : "2x" + "scale" : "2x", + "size" : "20x20" }, { "idiom" : "iphone", - "size" : "20x20", - "scale" : "3x" + "scale" : "3x", + "size" : "20x20" }, { "idiom" : "iphone", - "size" : "29x29", - "scale" : "2x" + "scale" : "2x", + "size" : "29x29" }, { "idiom" : "iphone", - "size" : "29x29", - "scale" : "3x" + "scale" : "3x", + "size" : "29x29" }, { "idiom" : "iphone", - "size" : "40x40", - "scale" : "2x" + "scale" : "2x", + "size" : "40x40" }, { "idiom" : "iphone", - "size" : "40x40", - "scale" : "3x" + "scale" : "3x", + "size" : "40x40" }, { "idiom" : "iphone", - "size" : "60x60", - "scale" : "2x" + "scale" : "2x", + "size" : "60x60" }, { "idiom" : "iphone", - "size" : "60x60", - "scale" : "3x" + "scale" : "3x", + "size" : "60x60" }, { "idiom" : "ipad", - "size" : "20x20", - "scale" : "1x" + "scale" : "1x", + "size" : "20x20" }, { "idiom" : "ipad", - "size" : "20x20", - "scale" : "2x" + "scale" : "2x", + "size" : "20x20" }, { "idiom" : "ipad", - "size" : "29x29", - "scale" : "1x" + "scale" : "1x", + "size" : "29x29" }, { "idiom" : "ipad", - "size" : "29x29", - "scale" : "2x" + "scale" : "2x", + "size" : "29x29" }, { "idiom" : "ipad", - "size" : "40x40", - "scale" : "1x" + "scale" : "1x", + "size" : "40x40" }, { "idiom" : "ipad", - "size" : "40x40", - "scale" : "2x" + "scale" : "2x", + "size" : "40x40" }, { "idiom" : "ipad", - "size" : "76x76", - "scale" : "1x" + "scale" : "1x", + "size" : "76x76" }, { "idiom" : "ipad", - "size" : "76x76", - "scale" : "2x" + "scale" : "2x", + "size" : "76x76" }, { "idiom" : "ipad", - "size" : "83.5x83.5", - "scale" : "2x" + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" } ], "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} diff --git a/DynamicWebKit/DynamicWebKit/Assets.xcassets/Contents.json b/DynamicWebKit/DynamicWebKit/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/DynamicWebKit/DynamicWebKit/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DynamicWebKit/DynamicWebKit/Assets.xcassets/chevron.backward.symbolset/Contents.json b/DynamicWebKit/DynamicWebKit/Assets.xcassets/chevron.backward.symbolset/Contents.json new file mode 100644 index 0000000..3aee322 --- /dev/null +++ b/DynamicWebKit/DynamicWebKit/Assets.xcassets/chevron.backward.symbolset/Contents.json @@ -0,0 +1,13 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "symbols" : [ + { + "filename" : "backward.svg", + "idiom" : "universal", + "language-direction" : "left-to-right" + } + ] +} diff --git a/DynamicWebKit/DynamicWebKit/Assets.xcassets/chevron.backward.symbolset/backward.svg b/DynamicWebKit/DynamicWebKit/Assets.xcassets/chevron.backward.symbolset/backward.svg new file mode 100644 index 0000000..f32a098 --- /dev/null +++ b/DynamicWebKit/DynamicWebKit/Assets.xcassets/chevron.backward.symbolset/backward.svg @@ -0,0 +1,161 @@ + + + + + + + + + Weight/Scale Variations + Ultralight + Thin + Light + Regular + Medium + Semibold + Bold + Heavy + Black + + + + + + + + + + + Design Variations + Symbols are supported in up to nine weights and three scales. + For optimal layout with text and other symbols, vertically align + symbols with the adjacent text. + + + + + + Margins + Leading and trailing margins on the left and right side of each symbol + can be adjusted by modifying the x-location of the margin guidelines. + Modifications are automatically applied proportionally to all + scales and weights. + + + + Exporting + Symbols should be outlined when exporting to ensure the + design is preserved when submitting to Xcode. + Template v.2.0 + Requires Xcode 12 or greater + Generated from chevron.backward + Typeset at 100 points + Small + Medium + Large + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DynamicWebKit/DynamicWebKit/Assets.xcassets/chevron.forward.symbolset/Contents.json b/DynamicWebKit/DynamicWebKit/Assets.xcassets/chevron.forward.symbolset/Contents.json new file mode 100644 index 0000000..b8b271f --- /dev/null +++ b/DynamicWebKit/DynamicWebKit/Assets.xcassets/chevron.forward.symbolset/Contents.json @@ -0,0 +1,13 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "symbols" : [ + { + "filename" : "forward.svg", + "idiom" : "universal", + "language-direction" : "left-to-right" + } + ] +} diff --git a/DynamicWebKit/DynamicWebKit/Assets.xcassets/chevron.forward.symbolset/forward.svg b/DynamicWebKit/DynamicWebKit/Assets.xcassets/chevron.forward.symbolset/forward.svg new file mode 100644 index 0000000..c387b82 --- /dev/null +++ b/DynamicWebKit/DynamicWebKit/Assets.xcassets/chevron.forward.symbolset/forward.svg @@ -0,0 +1,161 @@ + + + + + + + + + Weight/Scale Variations + Ultralight + Thin + Light + Regular + Medium + Semibold + Bold + Heavy + Black + + + + + + + + + + + Design Variations + Symbols are supported in up to nine weights and three scales. + For optimal layout with text and other symbols, vertically align + symbols with the adjacent text. + + + + + + Margins + Leading and trailing margins on the left and right side of each symbol + can be adjusted by modifying the x-location of the margin guidelines. + Modifications are automatically applied proportionally to all + scales and weights. + + + + Exporting + Symbols should be outlined when exporting to ensure the + design is preserved when submitting to Xcode. + Template v.2.0 + Requires Xcode 12 or greater + Generated from chevron.forward + Typeset at 100 points + Small + Medium + Large + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DynamicWebKit/DynamicWebKit/Base.lproj/Main.storyboard b/DynamicWebKit/DynamicWebKit/Base.lproj/Main.storyboard index afb9d6c..97443bd 100644 --- a/DynamicWebKit/DynamicWebKit/Base.lproj/Main.storyboard +++ b/DynamicWebKit/DynamicWebKit/Base.lproj/Main.storyboard @@ -1,29 +1,45 @@ - - - - + + - + + - + - + - + - + + + + + + + + + + + + + + + + + + - + @@ -31,7 +47,7 @@ - + @@ -44,4 +60,8 @@ + + + + diff --git a/DynamicWebKit/DynamicWebKit/HTML/001-dark.png b/DynamicWebKit/DynamicWebKit/HTML/001-dark.png new file mode 100644 index 0000000..98e7b46 Binary files /dev/null and b/DynamicWebKit/DynamicWebKit/HTML/001-dark.png differ diff --git a/DynamicWebKit/DynamicWebKit/HTML/001-dark@2x.png b/DynamicWebKit/DynamicWebKit/HTML/001-dark@2x.png new file mode 100644 index 0000000..867a616 Binary files /dev/null and b/DynamicWebKit/DynamicWebKit/HTML/001-dark@2x.png differ diff --git a/DynamicWebKit/DynamicWebKit/HTML/001.png b/DynamicWebKit/DynamicWebKit/HTML/001.png new file mode 100644 index 0000000..1d96a9a Binary files /dev/null and b/DynamicWebKit/DynamicWebKit/HTML/001.png differ diff --git a/DynamicWebKit/DynamicWebKit/HTML/001@2x.png b/DynamicWebKit/DynamicWebKit/HTML/001@2x.png new file mode 100644 index 0000000..15688c5 Binary files /dev/null and b/DynamicWebKit/DynamicWebKit/HTML/001@2x.png differ diff --git a/DynamicWebKit/DynamicWebKit/HTML/default.html b/DynamicWebKit/DynamicWebKit/HTML/default.html new file mode 100644 index 0000000..96c14f7 --- /dev/null +++ b/DynamicWebKit/DynamicWebKit/HTML/default.html @@ -0,0 +1,21 @@ + + + + + + +User Guide + + +

Dynamic Type With WebKit

+

Getting Started

+

An example of using dynamic type fonts with HTML content displayed in a WKWebView. Changing the text size in Settings should also change the text in this web view.

+

Handling Images

+

An example of an image with a dark mode variation

+ + +Xcode source editor + + + + diff --git a/DynamicWebKit/DynamicWebKit/HTML/stylesheet.css b/DynamicWebKit/DynamicWebKit/HTML/stylesheet.css new file mode 100644 index 0000000..00998a7 --- /dev/null +++ b/DynamicWebKit/DynamicWebKit/HTML/stylesheet.css @@ -0,0 +1,40 @@ +:root { + color-scheme: light dark; + --title-color: red; + --subhead-color: green; + --link-color: blue; +} + +@media screen and (prefers-color-scheme: dark) { + :root { + --title-color: #ff8080; + --subhead-color: #80ff80; + --link-color: #93d5ff; + } +} + +body { + font: -apple-system-body; +} + +h1 { + font: -apple-system-headline; + color: var(--title-color); +} + +h2 { + font: -apple-system-subheadline; + color: var(--subhead-color); +} + +footer { + font: -apple-system-footnote; +} + +a { + color: var(--link-color); +} + +img { + max-width: 100%; +} diff --git a/DynamicWebKit/DynamicWebKit/Info.plist b/DynamicWebKit/DynamicWebKit/Info.plist index 16be3b6..cf8aa00 100644 --- a/DynamicWebKit/DynamicWebKit/Info.plist +++ b/DynamicWebKit/DynamicWebKit/Info.plist @@ -41,5 +41,11 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight + WKAppBoundDomains + + useyourloaf.com + github.com + apple.com + diff --git a/DynamicWebKit/DynamicWebKit/WebViewController.swift b/DynamicWebKit/DynamicWebKit/WebViewController.swift new file mode 100644 index 0000000..91632b7 --- /dev/null +++ b/DynamicWebKit/DynamicWebKit/WebViewController.swift @@ -0,0 +1,115 @@ +// Created by Keith Harrison https://useyourloaf.com +// Copyright (c) 2017-2020 Keith Harrison. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import UIKit +import WebKit + +final class WebViewController: UIViewController { + @IBOutlet private var backwardButton: UIBarButtonItem! + @IBOutlet private var forwardButton: UIBarButtonItem! + + var html: String = "default" { + didSet { + loadHTML(html) + } + } + + private lazy var webView: WKWebView = { + let configuration = WKWebViewConfiguration() + + if #available(iOS 14.0, *) { + // Allow restricted API access on the + // app-bound domains (cookies, etc). + // Doesn't seem to be required + // configuration.limitsNavigationsToAppBoundDomains = true + } else { + // Fallback to WKPreferences for iOS 13 to + // disable javascript. + let preferences = WKPreferences() + // preferences.javaScriptEnabled = false + configuration.preferences = preferences + } + + let webView = WKWebView(frame: .zero, configuration: configuration) + webView.navigationDelegate = self + return webView + }() + + override func loadView() { + view = webView + loadHTML(html) + NotificationCenter.default.addObserver(self, selector: #selector(contentSizeDidChange(_:)), name: UIContentSizeCategory.didChangeNotification, object: nil) + } + + @IBAction func forwardAction(_ sender: UIBarButtonItem) { + webView.goForward() + } + + @IBAction func backwardAction(_ sender: UIBarButtonItem) { + webView.goBack() + } + + @objc private func contentSizeDidChange(_ notification: Notification) { + webView.reload() + } + + private func loadHTML(_ name: String) { + if let url = Bundle.main.url(forResource: name, withExtension: "html") { + webView.loadFileURL(url, allowingReadAccessTo: url) + } + } +} + +extension WebViewController: WKNavigationDelegate { + func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, preferences: WKWebpagePreferences, decisionHandler: @escaping (WKNavigationActionPolicy, WKWebpagePreferences) -> Void) { + if #available(iOS 14.0, *) { + // To disable all javascript content + // preferences.allowsContentJavaScript = true + } + decisionHandler(.allow, preferences) + } + + func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) { + print(error) + updateNavigationState(webView) + } + + func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) { + updateNavigationState(webView) + } + + func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { + updateNavigationState(webView) + } + + private func updateNavigationState(_ webView: WKWebView) { + backwardButton.isEnabled = webView.canGoBack + forwardButton.isEnabled = webView.canGoForward + } +} diff --git a/DynamicWebKit/DynamicWebKit/readme.html b/DynamicWebKit/DynamicWebKit/readme.html deleted file mode 100644 index 703c048..0000000 --- a/DynamicWebKit/DynamicWebKit/readme.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - -

Dynamic Type With WebKit

-

Getting Started

-

An example of using dynamic type fonts with HTML content displayed in a WKWebView.

-

Changing the text size in Settings should also change the text in this web view.

- - - - diff --git a/DynamicWebKit/DynamicWebKit/stylesheet.css b/DynamicWebKit/DynamicWebKit/stylesheet.css deleted file mode 100644 index 59ff130..0000000 --- a/DynamicWebKit/DynamicWebKit/stylesheet.css +++ /dev/null @@ -1,18 +0,0 @@ -body { - font: -apple-system-body; -} - -h1 { - font: -apple-system-headline; - color: red; -} - -h2 { - font: -apple-system-subheadline; - color: blue; -} - -.footnote { - font: -apple-system-footnote; - color: green; -} diff --git a/DynamicWebKit/README.md b/DynamicWebKit/README.md index 188df97..40310c5 100644 --- a/DynamicWebKit/README.md +++ b/DynamicWebKit/README.md @@ -2,8 +2,14 @@ An example of how to use the Apple system fonts in a CSS stylesheet so static HTML content in a web view respects the user's choice of content size. +## Adding Support For Dark Mode And App Bound Domains + +I've updated this project to support dark mode (requires iOS 13) and app bound domains (iOS 14). + ## Further Details -For further details see the following blog post: +For further details see the following blog posts: + [Using Dynamic Type With Web Views](https://useyourloaf.com/blog/using-dynamic-type-with-web-views/) ++ [Supporting Dark Mode In WkWebView](https://useyourloaf.com/blog/supporting-dark-mode-in-wkwebview/) ++ [App Bound Domains](https://useyourloaf.com/blog/app-bound-domains/) diff --git a/Encode/encode.xcodeproj/project.pbxproj b/Encode/encode.xcodeproj/project.pbxproj index d1f32bb..90a9c65 100644 --- a/Encode/encode.xcodeproj/project.pbxproj +++ b/Encode/encode.xcodeproj/project.pbxproj @@ -195,11 +195,12 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0720; - LastUpgradeCheck = 0720; + LastUpgradeCheck = 1120; ORGANIZATIONNAME = "Keith Harrison"; TargetAttributes = { 53BE6B291C356461001C8FC9 = { CreatedOnToolsVersion = 7.2; + DevelopmentTeam = LCC2J94N44; }; 53BE6B3D1C356462001C8FC9 = { CreatedOnToolsVersion = 7.2; @@ -213,7 +214,7 @@ }; buildConfigurationList = 53BE6B251C356461001C8FC9 /* Build configuration list for PBXProject "encode" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, @@ -326,17 +327,28 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 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_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_IMPLICIT_RETAIN_SELF = 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -363,6 +375,7 @@ ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -371,17 +384,28 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 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_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_IMPLICIT_RETAIN_SELF = 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -400,6 +424,8 @@ IPHONEOS_DEPLOYMENT_TARGET = 9.2; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -409,6 +435,7 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + DEVELOPMENT_TEAM = LCC2J94N44; INFOPLIST_FILE = encode/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.encode; @@ -420,6 +447,7 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + DEVELOPMENT_TEAM = LCC2J94N44; INFOPLIST_FILE = encode/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.encode; diff --git a/Encode/encode.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Encode/encode.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..cb96726 --- /dev/null +++ b/Encode/encode.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Encode/encode.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Encode/encode.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Encode/encode.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Encode/encode/Assets.xcassets/AppIcon.appiconset/Contents.json b/Encode/encode/Assets.xcassets/AppIcon.appiconset/Contents.json index eeea76c..d8db8d6 100644 --- a/Encode/encode/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/Encode/encode/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,5 +1,15 @@ { "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, { "idiom" : "iphone", "size" : "29x29", @@ -30,6 +40,16 @@ "size" : "60x60", "scale" : "3x" }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, { "idiom" : "ipad", "size" : "29x29", @@ -64,6 +84,11 @@ "idiom" : "ipad", "size" : "83.5x83.5", "scale" : "2x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" } ], "info" : { diff --git a/Encode/encode/Base.lproj/Main.storyboard b/Encode/encode/Base.lproj/Main.storyboard index 7ec14df..d39fa46 100644 --- a/Encode/encode/Base.lproj/Main.storyboard +++ b/Encode/encode/Base.lproj/Main.storyboard @@ -1,97 +1,93 @@ - - + + + - - + + + + - + - - - - - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - + + + + + + @@ -101,7 +97,25 @@ - + + + + + + + + + + + + + + + + + + + diff --git a/Encode/encode/String+URLEncode.swift b/Encode/encode/String+URLEncode.swift index 2d9e9e2..45a1157 100644 --- a/Encode/encode/String+URLEncode.swift +++ b/Encode/encode/String+URLEncode.swift @@ -58,9 +58,9 @@ extension String { public func stringByAddingPercentEncodingForRFC3986() -> String? { let unreserved = "-._~/?" - let allowedCharacterSet = NSMutableCharacterSet.alphanumericCharacterSet() - allowedCharacterSet.addCharactersInString(unreserved) - return stringByAddingPercentEncodingWithAllowedCharacters(allowedCharacterSet) + let allowedCharacterSet = NSMutableCharacterSet.alphanumeric() + allowedCharacterSet.addCharacters(in: unreserved) + return addingPercentEncoding(withAllowedCharacters: allowedCharacterSet as CharacterSet) } /** @@ -83,16 +83,16 @@ extension String { public func stringByAddingPercentEncodingForFormData(plusForSpace: Bool=false) -> String? { let unreserved = "*-._" - let allowedCharacterSet = NSMutableCharacterSet.alphanumericCharacterSet() - allowedCharacterSet.addCharactersInString(unreserved) + let allowedCharacterSet = NSMutableCharacterSet.alphanumeric() + allowedCharacterSet.addCharacters(in: unreserved) if plusForSpace { - allowedCharacterSet.addCharactersInString(" ") + allowedCharacterSet.addCharacters(in: " ") } - var encoded = stringByAddingPercentEncodingWithAllowedCharacters(allowedCharacterSet) + var encoded = addingPercentEncoding(withAllowedCharacters: allowedCharacterSet as CharacterSet) if plusForSpace { - encoded = encoded?.stringByReplacingOccurrencesOfString(" ", withString: "+") + encoded = encoded?.replacingOccurrences(of: " ", with: "+") } return encoded } diff --git a/Encode/encode/ViewController.swift b/Encode/encode/ViewController.swift index 720ca8b..462c88c 100644 --- a/Encode/encode/ViewController.swift +++ b/Encode/encode/ViewController.swift @@ -2,8 +2,8 @@ // ViewController.swift // encode // -// Created by Keith Harrison http://useyourloaf.com -// Copyright (c) 2016 Keith Harrison. All rights reserved. +// Created by Keith Harrison https://useyourloaf.com +// Copyright (c) 2016-2020 Keith Harrison. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: @@ -46,14 +46,14 @@ class ViewController: UIViewController { func updateOutputLabels() { let input = textInput.text - let usePlusForSpace = plusSwitch.on + let usePlusForSpace = plusSwitch.isOn rfc3986Output.text = input?.stringByAddingPercentEncodingForRFC3986() - formOutput.text = input?.stringByAddingPercentEncodingForFormData(usePlusForSpace) + formOutput.text = input?.stringByAddingPercentEncodingForFormData(plusForSpace: usePlusForSpace) } } extension ViewController: UITextFieldDelegate { - func textFieldShouldReturn(textField: UITextField) -> Bool { + func textFieldShouldReturn(_ textField: UITextField) -> Bool { updateOutputLabels() return true } diff --git a/Encode/encodeTests/String+URLEncodeTest.swift b/Encode/encodeTests/String+URLEncodeTest.swift index 4da757f..14af416 100644 --- a/Encode/encodeTests/String+URLEncodeTest.swift +++ b/Encode/encodeTests/String+URLEncodeTest.swift @@ -1,8 +1,8 @@ // // String+URLEncodeTest.swift // -// Created by Keith Harrison http://useyourloaf.com -// Copyright (c) 2016 Keith Harrison. All rights reserved. +// Created by Keith Harrison https://useyourloaf.com +// Copyright (c) 2016-2020 Keith Harrison. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: @@ -92,14 +92,14 @@ class URLEncodeTest: XCTestCase { func testFormSpacePlusEncoded() { let input = "one two" - let output = input.stringByAddingPercentEncodingForFormData(true) + let output = input.stringByAddingPercentEncodingForFormData(plusForSpace: true) let expected = "one+two" XCTAssertEqual(expected, output) } func testFormPlusIsPercentEncoded() { let input = "one+two" - let output = input.stringByAddingPercentEncodingForFormData(true) + let output = input.stringByAddingPercentEncodingForFormData(plusForSpace: true) let expected = "one%2Btwo" XCTAssertEqual(expected, output) } diff --git a/Encode/encodeUITests/encodeUITests.swift b/Encode/encodeUITests/encodeUITests.swift index 9a3a44a..8abdde3 100644 --- a/Encode/encodeUITests/encodeUITests.swift +++ b/Encode/encodeUITests/encodeUITests.swift @@ -2,8 +2,8 @@ // encodeUITests.swift // encodeUITests // -// Created by Keith Harrison http://useyourloaf.com -// Copyright (c) 2016 Keith Harrison. All rights reserved. +// Created by Keith Harrison https://useyourloaf.com +// Copyright (c) 2016-2020 Keith Harrison. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: @@ -63,7 +63,7 @@ class encodeUITests: XCTestCase { let input = "one two" let expectedRFC3986 = input.stringByAddingPercentEncodingForRFC3986() let expectedForm = input.stringByAddingPercentEncodingForFormData() - let expectedPlusForm = input.stringByAddingPercentEncodingForFormData(true) + let expectedPlusForm = input.stringByAddingPercentEncodingForFormData(plusForSpace: true) let textToEncodeTextField = app.textFields["InputText"] textToEncodeTextField.tap() diff --git a/GridView/GridView.xcodeproj/project.pbxproj b/GridView/GridView.xcodeproj/project.pbxproj index c194dfa..58f1176 100644 --- a/GridView/GridView.xcodeproj/project.pbxproj +++ b/GridView/GridView.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 51; objects = { /* Begin PBXBuildFile section */ @@ -143,26 +143,26 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0830; - LastUpgradeCheck = 0900; + LastUpgradeCheck = 1240; ORGANIZATIONNAME = "Keith Harrison"; TargetAttributes = { 531CCB861EAA45D2008349F4 = { CreatedOnToolsVersion = 8.3.2; DevelopmentTeam = LCC2J94N44; - LastSwiftMigration = 0900; + LastSwiftMigration = 1120; ProvisioningStyle = Automatic; }; 5366BC611EA8DF80006A06E5 = { CreatedOnToolsVersion = 8.3.2; DevelopmentTeam = LCC2J94N44; - LastSwiftMigration = 0900; + LastSwiftMigration = 1120; ProvisioningStyle = Automatic; }; }; }; buildConfigurationList = 5366BC5D1EA8DF80006A06E5 /* Build configuration list for PBXProject "GridView" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + compatibilityVersion = "Xcode 10.0"; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, @@ -252,12 +252,16 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = GridViewUI/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.GridViewUI; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -275,12 +279,16 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = GridViewUI/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.GridViewUI; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -290,6 +298,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; @@ -300,6 +309,7 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -307,8 +317,10 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -333,7 +345,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.3; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -347,6 +359,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; @@ -357,6 +370,7 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -364,8 +378,10 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -384,10 +400,11 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.3; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -399,12 +416,15 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; DEVELOPMENT_TEAM = LCC2J94N44; INFOPLIST_FILE = GridView/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.GridView; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -414,12 +434,15 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; DEVELOPMENT_TEAM = LCC2J94N44; INFOPLIST_FILE = GridView/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.GridView; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Release; }; diff --git a/GridView/GridView.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/GridView/GridView.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..0540ebe --- /dev/null +++ b/GridView/GridView.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/GridView/GridView.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/GridView/GridView.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/GridView/GridView.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/GridView/GridView/Assets.xcassets/AppIcon.appiconset/Contents.json b/GridView/GridView/Assets.xcassets/AppIcon.appiconset/Contents.json index 36d2c80..d8db8d6 100644 --- a/GridView/GridView/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/GridView/GridView/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,5 +1,15 @@ { "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, { "idiom" : "iphone", "size" : "29x29", @@ -30,6 +40,16 @@ "size" : "60x60", "scale" : "3x" }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, { "idiom" : "ipad", "size" : "29x29", @@ -59,6 +79,16 @@ "idiom" : "ipad", "size" : "76x76", "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" } ], "info" : { diff --git a/GridView/GridView/Base.lproj/Main.storyboard b/GridView/GridView/Base.lproj/Main.storyboard index 15a50e8..2bb0240 100644 --- a/GridView/GridView/Base.lproj/Main.storyboard +++ b/GridView/GridView/Base.lproj/Main.storyboard @@ -1,11 +1,11 @@ - + - + diff --git a/GridView/GridView/GridView.swift b/GridView/GridView/GridView.swift index 8167594..ad3349d 100644 --- a/GridView/GridView/GridView.swift +++ b/GridView/GridView/GridView.swift @@ -36,7 +36,6 @@ import UIKit @IBDesignable public class GridView: UIView { - /// The number of horizontal rows - default is 1. @IBInspectable public var rowCount: Int = 1 { didSet { setNeedsDisplay() } } @@ -49,7 +48,7 @@ public class GridView: UIView { /// The grid line width - default is 1 point. @IBInspectable public var lineWidth: CGFloat = 1.0 { didSet { setNeedsDisplay() } } - override public func draw(_ rect: CGRect) { + public override func draw(_ rect: CGRect) { lineColor.set() rowPath?.stroke() columnPath?.stroke() diff --git a/Huckleberry/Huckleberry.xcodeproj/project.pbxproj b/Huckleberry/Huckleberry.xcodeproj/project.pbxproj index 779a6e6..cb5ed1a 100644 --- a/Huckleberry/Huckleberry.xcodeproj/project.pbxproj +++ b/Huckleberry/Huckleberry.xcodeproj/project.pbxproj @@ -3,13 +3,13 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ + 5325894623C911B9008ABE63 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5325894823C911B9008ABE63 /* LaunchScreen.storyboard */; }; 53512CFC18AC3A0300A74F57 /* UYLTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 53512CFB18AC3A0300A74F57 /* UYLTableViewController.m */; }; 535C803818AD71750039A2B3 /* SourceData.plist in Resources */ = {isa = PBXBuildFile; fileRef = 535C803718AD71750039A2B3 /* SourceData.plist */; }; - 536259DA1F41DEFD00616356 /* README.md in Sources */ = {isa = PBXBuildFile; fileRef = 536259D91F41DEFD00616356 /* README.md */; }; 5363F6D618AADBF6001CBD3A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5363F6D518AADBF6001CBD3A /* Foundation.framework */; }; 5363F6D818AADBF6001CBD3A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5363F6D718AADBF6001CBD3A /* CoreGraphics.framework */; }; 5363F6DA18AADBF6001CBD3A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5363F6D918AADBF6001CBD3A /* UIKit.framework */; }; @@ -22,6 +22,7 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 5325894723C911B9008ABE63 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 53512CFA18AC3A0300A74F57 /* UYLTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UYLTableViewController.h; sourceTree = ""; }; 53512CFB18AC3A0300A74F57 /* UYLTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UYLTableViewController.m; sourceTree = ""; }; 535C803718AD71750039A2B3 /* SourceData.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = SourceData.plist; sourceTree = ""; }; @@ -33,7 +34,6 @@ 5363F6DD18AADBF6001CBD3A /* Huckleberry-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Huckleberry-Info.plist"; sourceTree = ""; }; 5363F6DF18AADBF6001CBD3A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 5363F6E118AADBF6001CBD3A /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 5363F6E318AADBF6001CBD3A /* Huckleberry-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Huckleberry-Prefix.pch"; sourceTree = ""; }; 5363F6E418AADBF6001CBD3A /* UYLAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UYLAppDelegate.h; sourceTree = ""; }; 5363F6E518AADBF6001CBD3A /* UYLAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UYLAppDelegate.m; sourceTree = ""; }; 5363F6E818AADBF6001CBD3A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; @@ -96,6 +96,7 @@ 53512CFA18AC3A0300A74F57 /* UYLTableViewController.h */, 53512CFB18AC3A0300A74F57 /* UYLTableViewController.m */, 5363F6E718AADBF6001CBD3A /* Main.storyboard */, + 5325894823C911B9008ABE63 /* LaunchScreen.storyboard */, 5363F6ED18AADBF6001CBD3A /* Images.xcassets */, 5363F6DC18AADBF6001CBD3A /* Supporting Files */, ); @@ -109,7 +110,6 @@ 5363F6DD18AADBF6001CBD3A /* Huckleberry-Info.plist */, 5363F6DE18AADBF6001CBD3A /* InfoPlist.strings */, 5363F6E118AADBF6001CBD3A /* main.m */, - 5363F6E318AADBF6001CBD3A /* Huckleberry-Prefix.pch */, ); name = "Supporting Files"; sourceTree = ""; @@ -141,12 +141,12 @@ isa = PBXProject; attributes = { CLASSPREFIX = UYL; - LastUpgradeCheck = 0830; + LastUpgradeCheck = 1120; ORGANIZATIONNAME = "Keith Harrison"; }; buildConfigurationList = 5363F6CD18AADBF6001CBD3A /* Build configuration list for PBXProject "Huckleberry" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + compatibilityVersion = "Xcode 11.0"; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, @@ -170,6 +170,7 @@ 5363F6EE18AADBF6001CBD3A /* Images.xcassets in Resources */, 535C803818AD71750039A2B3 /* SourceData.plist in Resources */, 5363F6E018AADBF6001CBD3A /* InfoPlist.strings in Resources */, + 5325894623C911B9008ABE63 /* LaunchScreen.storyboard in Resources */, 5363F6E918AADBF6001CBD3A /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -183,7 +184,6 @@ files = ( 53512CFC18AC3A0300A74F57 /* UYLTableViewController.m in Sources */, 5363F6E218AADBF6001CBD3A /* main.m in Sources */, - 536259DA1F41DEFD00616356 /* README.md in Sources */, 53A8DCA618AC37530053ABAF /* UYLTextCell.m in Sources */, 5363F6E618AADBF6001CBD3A /* UYLAppDelegate.m in Sources */, ); @@ -192,6 +192,14 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ + 5325894823C911B9008ABE63 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 5325894723C911B9008ABE63 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; 5363F6DE18AADBF6001CBD3A /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( @@ -219,14 +227,22 @@ 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_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_IMPLICIT_RETAIN_SELF = 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; @@ -263,14 +279,22 @@ 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_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_IMPLICIT_RETAIN_SELF = 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; @@ -296,9 +320,7 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "Huckleberry/Huckleberry-Prefix.pch"; INFOPLIST_FILE = "Huckleberry/Huckleberry-Info.plist"; PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -310,9 +332,7 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "Huckleberry/Huckleberry-Prefix.pch"; INFOPLIST_FILE = "Huckleberry/Huckleberry-Info.plist"; PRODUCT_BUNDLE_IDENTIFIER = "com.useyourloaf.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/Huckleberry/Huckleberry.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Huckleberry/Huckleberry.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..774407d --- /dev/null +++ b/Huckleberry/Huckleberry.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Huckleberry/Huckleberry.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Huckleberry/Huckleberry.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Huckleberry/Huckleberry.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Huckleberry/Huckleberry/Base.lproj/LaunchScreen.storyboard b/Huckleberry/Huckleberry/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..867027e --- /dev/null +++ b/Huckleberry/Huckleberry/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Huckleberry/Huckleberry/Huckleberry-Info.plist b/Huckleberry/Huckleberry/Huckleberry-Info.plist index 6667e41..3f28fd9 100644 --- a/Huckleberry/Huckleberry/Huckleberry-Info.plist +++ b/Huckleberry/Huckleberry/Huckleberry-Info.plist @@ -24,6 +24,8 @@ 1.0 LSRequiresIPhoneOS + UILaunchStoryboardName + LaunchScreen UIMainStoryboardFile Main UIRequiredDeviceCapabilities diff --git a/Huckleberry/Huckleberry/Huckleberry-Prefix.pch b/Huckleberry/Huckleberry/Huckleberry-Prefix.pch deleted file mode 100644 index 82a2bb4..0000000 --- a/Huckleberry/Huckleberry/Huckleberry-Prefix.pch +++ /dev/null @@ -1,16 +0,0 @@ -// -// Prefix header -// -// The contents of this file are implicitly included at the beginning of every source file. -// - -#import - -#ifndef __IPHONE_5_0 -#warning "This project uses features only available in iOS SDK 5.0 and later." -#endif - -#ifdef __OBJC__ - #import - #import -#endif diff --git a/Huckleberry/Huckleberry/Images.xcassets/AppIcon.appiconset/Contents.json b/Huckleberry/Huckleberry/Images.xcassets/AppIcon.appiconset/Contents.json index a396706..19882d5 100644 --- a/Huckleberry/Huckleberry/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/Huckleberry/Huckleberry/Images.xcassets/AppIcon.appiconset/Contents.json @@ -1,19 +1,49 @@ { "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, { "idiom" : "iphone", "size" : "29x29", "scale" : "2x" }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, { "idiom" : "iphone", "size" : "40x40", "scale" : "2x" }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, { "idiom" : "iphone", "size" : "60x60", "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" } ], "info" : { diff --git a/Huckleberry/Huckleberry/Images.xcassets/Contents.json b/Huckleberry/Huckleberry/Images.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/Huckleberry/Huckleberry/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Huckleberry/Huckleberry/Images.xcassets/LaunchImage.launchimage/Contents.json b/Huckleberry/Huckleberry/Images.xcassets/LaunchImage.launchimage/Contents.json deleted file mode 100644 index c79ebd3..0000000 --- a/Huckleberry/Huckleberry/Images.xcassets/LaunchImage.launchimage/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "subtype" : "retina4", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/KeyCommand/KeyCommand.xcodeproj/project.pbxproj b/KeyCommand/KeyCommand.xcodeproj/project.pbxproj index 15faefb..bef861b 100644 --- a/KeyCommand/KeyCommand.xcodeproj/project.pbxproj +++ b/KeyCommand/KeyCommand.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ @@ -186,7 +186,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0810; - LastUpgradeCheck = 0900; + LastUpgradeCheck = 1120; ORGANIZATIONNAME = "Keith Harrison"; TargetAttributes = { 5320051C1DD516C300EEFEE6 = { @@ -197,14 +197,14 @@ 5334D0761DD3B6250032CB00 = { CreatedOnToolsVersion = 8.1; DevelopmentTeam = LCC2J94N44; - LastSwiftMigration = 0900; + LastSwiftMigration = 1120; ProvisioningStyle = Automatic; }; }; }; buildConfigurationList = 5334D0721DD3B6250032CB00 /* Build configuration list for PBXProject "KeyCommand" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + compatibilityVersion = "Xcode 11.0"; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, @@ -317,7 +317,10 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; DEVELOPMENT_TEAM = LCC2J94N44; INFOPLIST_FILE = KeyCommandObjC/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.KeyCommandObjC; PRODUCT_NAME = "$(TARGET_NAME)"; }; @@ -329,7 +332,10 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; DEVELOPMENT_TEAM = LCC2J94N44; INFOPLIST_FILE = KeyCommandObjC/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.KeyCommandObjC; PRODUCT_NAME = "$(TARGET_NAME)"; }; @@ -339,6 +345,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -348,6 +355,7 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -355,6 +363,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -396,6 +405,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -405,6 +415,7 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -412,6 +423,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -436,7 +448,8 @@ IPHONEOS_DEPLOYMENT_TARGET = 10.1; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; TARGETED_DEVICE_FAMILY = 2; VALIDATE_PRODUCT = YES; }; @@ -448,11 +461,15 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; DEVELOPMENT_TEAM = LCC2J94N44; INFOPLIST_FILE = KeyCommand/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.2; PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.KeyCommand; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -462,11 +479,15 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; DEVELOPMENT_TEAM = LCC2J94N44; INFOPLIST_FILE = KeyCommand/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.2; PRODUCT_BUNDLE_IDENTIFIER = com.useyourloaf.KeyCommand; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Release; }; diff --git a/KeyCommand/KeyCommand.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/KeyCommand/KeyCommand.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..911133b --- /dev/null +++ b/KeyCommand/KeyCommand.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/KeyCommand/KeyCommand.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/KeyCommand/KeyCommand.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/KeyCommand/KeyCommand.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/KeyCommand/KeyCommand/Assets.xcassets/AppIcon.appiconset/Contents.json b/KeyCommand/KeyCommand/Assets.xcassets/AppIcon.appiconset/Contents.json index b637e82..4590729 100644 --- a/KeyCommand/KeyCommand/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/KeyCommand/KeyCommand/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -53,6 +53,12 @@ "idiom" : "ipad", "filename" : "cmd167.png", "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "cmd1024.png", + "scale" : "1x" } ], "info" : { diff --git a/KeyCommand/KeyCommand/Assets.xcassets/AppIcon.appiconset/cmd1024.png b/KeyCommand/KeyCommand/Assets.xcassets/AppIcon.appiconset/cmd1024.png new file mode 100644 index 0000000..1b94956 Binary files /dev/null and b/KeyCommand/KeyCommand/Assets.xcassets/AppIcon.appiconset/cmd1024.png differ diff --git a/KeyCommand/KeyCommand/Base.lproj/Main.storyboard b/KeyCommand/KeyCommand/Base.lproj/Main.storyboard index 8ba27b8..8d88e33 100644 --- a/KeyCommand/KeyCommand/Base.lproj/Main.storyboard +++ b/KeyCommand/KeyCommand/Base.lproj/Main.storyboard @@ -1,11 +1,9 @@ - - - - + + - + @@ -15,11 +13,11 @@ - + - +