From db0e9861158d464a638a2a23ca9df10eedad0c09 Mon Sep 17 00:00:00 2001 From: joey Date: Tue, 10 Mar 2020 11:32:38 -0700 Subject: [PATCH] restructured everything, source didn't change. --- DossyText.podspec | 4 +- DossyText.xcodeproj/project.pbxproj | 306 --------------- .../xcschemes/DossyText.xcscheme | 91 ----- DossyText/AppDelegate.swift | 52 --- .../AppIcon.appiconset/Contents.json | 38 -- DossyText/Base.lproj/LaunchScreen.storyboard | 27 -- DossyText/LICENSE | 22 -- DossyText/View.swift | 59 --- DossyText/ViewController.swift | 25 -- .../project.pbxproj | 347 ++++++++++++++++++ .../contents.xcworkspacedata | 2 +- .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 30066 bytes .../xcschemes/xcschememanagement.plist | 10 +- .../App Files/AppDelegate.swift | 23 ++ .../AppIcon.appiconset/Contents.json | 98 +++++ .../App Files/Assets.xcassets/Contents.json | 6 + .../Base.lproj/LaunchScreen.storyboard | 46 +++ .../DossyTextExample/App Files/Greenscr.ttf | Bin 0 -> 21000 bytes .../DossyTextExample/App Files}/Info.plist | 32 +- .../App Files/SceneDelegate.swift | 24 ++ .../DossyTextExample/DossyTextLabel.swift | 9 +- .../DossyTextExample/ViewController.swift | 47 +++ 23 files changed, 636 insertions(+), 640 deletions(-) delete mode 100644 DossyText.xcodeproj/project.pbxproj delete mode 100644 DossyText.xcodeproj/xcuserdata/joeynelson.xcuserdatad/xcschemes/DossyText.xcscheme delete mode 100644 DossyText/AppDelegate.swift delete mode 100644 DossyText/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 DossyText/Base.lproj/LaunchScreen.storyboard delete mode 100755 DossyText/LICENSE delete mode 100644 DossyText/View.swift delete mode 100644 DossyText/ViewController.swift create mode 100644 Example/DossyTextExample/DossyTextExample.xcodeproj/project.pbxproj rename {DossyText.xcodeproj => Example/DossyTextExample/DossyTextExample.xcodeproj}/project.xcworkspace/contents.xcworkspacedata (67%) create mode 100644 Example/DossyTextExample/DossyTextExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 Example/DossyTextExample/DossyTextExample.xcodeproj/project.xcworkspace/xcuserdata/joeynelson.xcuserdatad/UserInterfaceState.xcuserstate rename {DossyText.xcodeproj => Example/DossyTextExample/DossyTextExample.xcodeproj}/xcuserdata/joeynelson.xcuserdatad/xcschemes/xcschememanagement.plist (62%) create mode 100644 Example/DossyTextExample/DossyTextExample/App Files/AppDelegate.swift create mode 100644 Example/DossyTextExample/DossyTextExample/App Files/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Example/DossyTextExample/DossyTextExample/App Files/Assets.xcassets/Contents.json create mode 100644 Example/DossyTextExample/DossyTextExample/App Files/Base.lproj/LaunchScreen.storyboard create mode 100755 Example/DossyTextExample/DossyTextExample/App Files/Greenscr.ttf rename {DossyText => Example/DossyTextExample/DossyTextExample/App Files}/Info.plist (56%) create mode 100644 Example/DossyTextExample/DossyTextExample/App Files/SceneDelegate.swift rename DossyText/DossyText.swift => Example/DossyTextExample/DossyTextExample/DossyTextLabel.swift (96%) create mode 100644 Example/DossyTextExample/DossyTextExample/ViewController.swift diff --git a/DossyText.podspec b/DossyText.podspec index 26f54f3..fc7224e 100644 --- a/DossyText.podspec +++ b/DossyText.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'DossyText' - s.version = '0.1.0' + s.version = '1.0.0' s.summary = 'A subclass of UILabel reminiscent of Strong Bads Tandy 400' s.description = <<-DESC @@ -13,6 +13,6 @@ DESC s.source = { :git => 'https://github.com/joeynelson42/DossyTextLabel.git', :tag => s.version.to_s } s.ios.deployment_target = '10.0' - s.source_files = 'DossyText/DossyText.swift' + s.source_files = 'DossyTextLabel/Source/DossyTextLabel.swift' end diff --git a/DossyText.xcodeproj/project.pbxproj b/DossyText.xcodeproj/project.pbxproj deleted file mode 100644 index 07d1a3f..0000000 --- a/DossyText.xcodeproj/project.pbxproj +++ /dev/null @@ -1,306 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - F1B4AF691F12708F004A88D5 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1B4AF681F12708F004A88D5 /* AppDelegate.swift */; }; - F1B4AF6B1F12708F004A88D5 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1B4AF6A1F12708F004A88D5 /* ViewController.swift */; }; - F1B4AF701F12708F004A88D5 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F1B4AF6F1F12708F004A88D5 /* Assets.xcassets */; }; - F1B4AF731F12708F004A88D5 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F1B4AF711F12708F004A88D5 /* LaunchScreen.storyboard */; }; - F1B4AF7B1F127197004A88D5 /* View.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1B4AF7A1F127197004A88D5 /* View.swift */; }; - F1B4AF7D1F1271B7004A88D5 /* DossyText.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1B4AF7C1F1271B7004A88D5 /* DossyText.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - F1B4AF651F12708F004A88D5 /* DossyText.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DossyText.app; sourceTree = BUILT_PRODUCTS_DIR; }; - F1B4AF681F12708F004A88D5 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - F1B4AF6A1F12708F004A88D5 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; - F1B4AF6F1F12708F004A88D5 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - F1B4AF721F12708F004A88D5 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - F1B4AF741F12708F004A88D5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - F1B4AF7A1F127197004A88D5 /* View.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = View.swift; sourceTree = ""; }; - F1B4AF7C1F1271B7004A88D5 /* DossyText.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DossyText.swift; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - F1B4AF621F12708F004A88D5 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - F1B4AF5C1F12708F004A88D5 = { - isa = PBXGroup; - children = ( - F1B4AF671F12708F004A88D5 /* DossyText */, - F1B4AF661F12708F004A88D5 /* Products */, - ); - sourceTree = ""; - }; - F1B4AF661F12708F004A88D5 /* Products */ = { - isa = PBXGroup; - children = ( - F1B4AF651F12708F004A88D5 /* DossyText.app */, - ); - name = Products; - sourceTree = ""; - }; - F1B4AF671F12708F004A88D5 /* DossyText */ = { - isa = PBXGroup; - children = ( - F1B4AF681F12708F004A88D5 /* AppDelegate.swift */, - F1B4AF6A1F12708F004A88D5 /* ViewController.swift */, - F1B4AF7A1F127197004A88D5 /* View.swift */, - F1B4AF7C1F1271B7004A88D5 /* DossyText.swift */, - F1B4AF6F1F12708F004A88D5 /* Assets.xcassets */, - F1B4AF711F12708F004A88D5 /* LaunchScreen.storyboard */, - F1B4AF741F12708F004A88D5 /* Info.plist */, - ); - path = DossyText; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - F1B4AF641F12708F004A88D5 /* DossyText */ = { - isa = PBXNativeTarget; - buildConfigurationList = F1B4AF771F12708F004A88D5 /* Build configuration list for PBXNativeTarget "DossyText" */; - buildPhases = ( - F1B4AF611F12708F004A88D5 /* Sources */, - F1B4AF621F12708F004A88D5 /* Frameworks */, - F1B4AF631F12708F004A88D5 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = DossyText; - productName = DossyText; - productReference = F1B4AF651F12708F004A88D5 /* DossyText.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - F1B4AF5D1F12708F004A88D5 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0830; - LastUpgradeCheck = 0830; - ORGANIZATIONNAME = NelsonJE; - TargetAttributes = { - F1B4AF641F12708F004A88D5 = { - CreatedOnToolsVersion = 8.3.3; - DevelopmentTeam = 2RF92UCMKX; - ProvisioningStyle = Automatic; - }; - }; - }; - buildConfigurationList = F1B4AF601F12708F004A88D5 /* Build configuration list for PBXProject "DossyText" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = F1B4AF5C1F12708F004A88D5; - productRefGroup = F1B4AF661F12708F004A88D5 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - F1B4AF641F12708F004A88D5 /* DossyText */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - F1B4AF631F12708F004A88D5 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - F1B4AF731F12708F004A88D5 /* LaunchScreen.storyboard in Resources */, - F1B4AF701F12708F004A88D5 /* Assets.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - F1B4AF611F12708F004A88D5 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - F1B4AF6B1F12708F004A88D5 /* ViewController.swift in Sources */, - F1B4AF7D1F1271B7004A88D5 /* DossyText.swift in Sources */, - F1B4AF691F12708F004A88D5 /* AppDelegate.swift in Sources */, - F1B4AF7B1F127197004A88D5 /* View.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - F1B4AF711F12708F004A88D5 /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - F1B4AF721F12708F004A88D5 /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - F1B4AF751F12708F004A88D5 /* 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++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = 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_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - 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_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 = 10.3; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - F1B4AF761F12708F004A88D5 /* 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++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = 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_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - 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_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.3; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - F1B4AF781F12708F004A88D5 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - DEVELOPMENT_TEAM = 2RF92UCMKX; - INFOPLIST_FILE = DossyText/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = NelsonJE.DossyText; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; - }; - name = Debug; - }; - F1B4AF791F12708F004A88D5 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - DEVELOPMENT_TEAM = 2RF92UCMKX; - INFOPLIST_FILE = DossyText/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = NelsonJE.DossyText; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - F1B4AF601F12708F004A88D5 /* Build configuration list for PBXProject "DossyText" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F1B4AF751F12708F004A88D5 /* Debug */, - F1B4AF761F12708F004A88D5 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - F1B4AF771F12708F004A88D5 /* Build configuration list for PBXNativeTarget "DossyText" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F1B4AF781F12708F004A88D5 /* Debug */, - F1B4AF791F12708F004A88D5 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = F1B4AF5D1F12708F004A88D5 /* Project object */; -} diff --git a/DossyText.xcodeproj/xcuserdata/joeynelson.xcuserdatad/xcschemes/DossyText.xcscheme b/DossyText.xcodeproj/xcuserdata/joeynelson.xcuserdatad/xcschemes/DossyText.xcscheme deleted file mode 100644 index 2630cfd..0000000 --- a/DossyText.xcodeproj/xcuserdata/joeynelson.xcuserdatad/xcschemes/DossyText.xcscheme +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DossyText/AppDelegate.swift b/DossyText/AppDelegate.swift deleted file mode 100644 index f5d622d..0000000 --- a/DossyText/AppDelegate.swift +++ /dev/null @@ -1,52 +0,0 @@ -// -// AppDelegate.swift -// DossyText -// -// Created by Joey Nelson on 7/9/17. -// Copyright © 2017 NelsonJE. All rights reserved. -// - -import UIKit - -@UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { - - var window: UIWindow? - - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { - // Override point for customization after application launch. - - let vc = ViewController() - window = UIWindow(frame: UIScreen.main.bounds) - window?.makeKeyAndVisible() - window?.rootViewController = vc - - return true - } - - func applicationWillResignActive(_ application: UIApplication) { - // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. - } - - func applicationDidEnterBackground(_ application: UIApplication) { - // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. - } - - func applicationWillEnterForeground(_ application: UIApplication) { - // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. - } - - func applicationDidBecomeActive(_ application: UIApplication) { - // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. - } - - func applicationWillTerminate(_ application: UIApplication) { - // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. - } - - -} - diff --git a/DossyText/Assets.xcassets/AppIcon.appiconset/Contents.json b/DossyText/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 118c98f..0000000 --- a/DossyText/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "images" : [ - { - "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" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/DossyText/Base.lproj/LaunchScreen.storyboard b/DossyText/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index fdf3f97..0000000 --- a/DossyText/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DossyText/LICENSE b/DossyText/LICENSE deleted file mode 100755 index 0c280ca..0000000 --- a/DossyText/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 TBXark - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/DossyText/View.swift b/DossyText/View.swift deleted file mode 100644 index 73238f9..0000000 --- a/DossyText/View.swift +++ /dev/null @@ -1,59 +0,0 @@ -// -// View.swift -// DossyText -// -// Created by Joey Nelson on 7/9/17. -// Copyright © 2017 NelsonJE. All rights reserved. -// - -import Foundation -import UIKit - -class View: UIView { - - // MARK: - Properties - - // MARK: - Subviews - var blink: DossyTextLabel! - - // MARK: - Initialization - - convenience init() { - self.init(frame: .zero) - configureSubviews() - configureLayout() - } - - /// Set view/subviews appearances - fileprivate func configureSubviews() { - backgroundColor = UIColor.fromHex(rgbValue: 0x181818) - - blink = DossyTextLabel() - blink.textColor = UIColor.fromHex(rgbValue: 0x1DB954) - blink.numberOfLines = 0 - } - - /// Add subviews, set layoutMargins, initialize stored constraints, set layout priorities, activate constraints - fileprivate func configureLayout() { - - addSubview(blink) - blink.translatesAutoresizingMaskIntoConstraints = false - - // Activate NSLayoutAnchors within this closure - NSLayoutConstraint.activate([ - blink.topAnchor.constraint(equalTo: topAnchor, constant: 25), - blink.leftAnchor.constraint(equalTo: leftAnchor, constant: 25), - blink.rightAnchor.constraint(equalTo: rightAnchor, constant: -25) - ]) - } -} - -extension UIColor{ - class func fromHex(rgbValue:UInt32, alpha:Double=1.0) -> UIColor{ - let red = CGFloat((rgbValue & 0xFF0000) >> 16)/256.0 - let green = CGFloat((rgbValue & 0xFF00) >> 8)/256.0 - let blue = CGFloat(rgbValue & 0xFF)/256.0 - - return UIColor(red:red, green:green, blue:blue, alpha:CGFloat(alpha)) - } -} diff --git a/DossyText/ViewController.swift b/DossyText/ViewController.swift deleted file mode 100644 index 7c60757..0000000 --- a/DossyText/ViewController.swift +++ /dev/null @@ -1,25 +0,0 @@ -// -// ViewController.swift -// DossyText -// -// Created by Joey Nelson on 7/9/17. -// Copyright © 2017 NelsonJE. All rights reserved. -// - -import UIKit - -class ViewController: UIViewController, DossyTextLabelDelegate { - - let baseView = View() - - override func viewDidLoad() { - super.viewDidLoad() - - view = baseView - baseView.blink.delegate = self - } - - override func viewDidAppear(_ animated: Bool) { - baseView.blink.type("Hello world!\nHow are you today?") - } -} diff --git a/Example/DossyTextExample/DossyTextExample.xcodeproj/project.pbxproj b/Example/DossyTextExample/DossyTextExample.xcodeproj/project.pbxproj new file mode 100644 index 0000000..ec31588 --- /dev/null +++ b/Example/DossyTextExample/DossyTextExample.xcodeproj/project.pbxproj @@ -0,0 +1,347 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + F19B40B624180E5500A5A44F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F19B40B524180E5500A5A44F /* AppDelegate.swift */; }; + F19B40B824180E5500A5A44F /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F19B40B724180E5500A5A44F /* SceneDelegate.swift */; }; + F19B40BA24180E5500A5A44F /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F19B40B924180E5500A5A44F /* ViewController.swift */; }; + F19B40BF24180E5900A5A44F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F19B40BE24180E5900A5A44F /* Assets.xcassets */; }; + F19B40C224180E5900A5A44F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F19B40C024180E5900A5A44F /* LaunchScreen.storyboard */; }; + F19B40D92418105900A5A44F /* DossyTextLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F19B40D82418105900A5A44F /* DossyTextLabel.swift */; }; + F19B40DB2418117600A5A44F /* Greenscr.ttf in Resources */ = {isa = PBXBuildFile; fileRef = F19B40DA2418117600A5A44F /* Greenscr.ttf */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + F19B40B224180E5500A5A44F /* DossyTextExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DossyTextExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + F19B40B524180E5500A5A44F /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + F19B40B724180E5500A5A44F /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + F19B40B924180E5500A5A44F /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + F19B40BE24180E5900A5A44F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + F19B40C124180E5900A5A44F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + F19B40C324180E5900A5A44F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + F19B40D82418105900A5A44F /* DossyTextLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DossyTextLabel.swift; sourceTree = ""; }; + F19B40DA2418117600A5A44F /* Greenscr.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Greenscr.ttf; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + F19B40AF24180E5500A5A44F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + F19B40A924180E5400A5A44F = { + isa = PBXGroup; + children = ( + F19B40B424180E5500A5A44F /* DossyTextExample */, + F19B40B324180E5500A5A44F /* Products */, + ); + sourceTree = ""; + }; + F19B40B324180E5500A5A44F /* Products */ = { + isa = PBXGroup; + children = ( + F19B40B224180E5500A5A44F /* DossyTextExample.app */, + ); + name = Products; + sourceTree = ""; + }; + F19B40B424180E5500A5A44F /* DossyTextExample */ = { + isa = PBXGroup; + children = ( + F19B40D724180ED200A5A44F /* App Files */, + F19B40B924180E5500A5A44F /* ViewController.swift */, + F19B40D82418105900A5A44F /* DossyTextLabel.swift */, + ); + path = DossyTextExample; + sourceTree = ""; + }; + F19B40D724180ED200A5A44F /* App Files */ = { + isa = PBXGroup; + children = ( + F19B40DA2418117600A5A44F /* Greenscr.ttf */, + F19B40BE24180E5900A5A44F /* Assets.xcassets */, + F19B40B524180E5500A5A44F /* AppDelegate.swift */, + F19B40B724180E5500A5A44F /* SceneDelegate.swift */, + F19B40C024180E5900A5A44F /* LaunchScreen.storyboard */, + F19B40C324180E5900A5A44F /* Info.plist */, + ); + path = "App Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + F19B40B124180E5500A5A44F /* DossyTextExample */ = { + isa = PBXNativeTarget; + buildConfigurationList = F19B40D124180E5900A5A44F /* Build configuration list for PBXNativeTarget "DossyTextExample" */; + buildPhases = ( + F19B40AE24180E5500A5A44F /* Sources */, + F19B40AF24180E5500A5A44F /* Frameworks */, + F19B40B024180E5500A5A44F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = DossyTextExample; + productName = DossyTextExample; + productReference = F19B40B224180E5500A5A44F /* DossyTextExample.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + F19B40AA24180E5400A5A44F /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1130; + LastUpgradeCheck = 1130; + ORGANIZATIONNAME = nelsonje; + TargetAttributes = { + F19B40B124180E5500A5A44F = { + CreatedOnToolsVersion = 11.3.1; + }; + }; + }; + buildConfigurationList = F19B40AD24180E5400A5A44F /* Build configuration list for PBXProject "DossyTextExample" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = F19B40A924180E5400A5A44F; + productRefGroup = F19B40B324180E5500A5A44F /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + F19B40B124180E5500A5A44F /* DossyTextExample */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + F19B40B024180E5500A5A44F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F19B40C224180E5900A5A44F /* LaunchScreen.storyboard in Resources */, + F19B40BF24180E5900A5A44F /* Assets.xcassets in Resources */, + F19B40DB2418117600A5A44F /* Greenscr.ttf in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + F19B40AE24180E5500A5A44F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F19B40BA24180E5500A5A44F /* ViewController.swift in Sources */, + F19B40B624180E5500A5A44F /* AppDelegate.swift in Sources */, + F19B40D92418105900A5A44F /* DossyTextLabel.swift in Sources */, + F19B40B824180E5500A5A44F /* SceneDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + F19B40C024180E5900A5A44F /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + F19B40C124180E5900A5A44F /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + F19B40CF24180E5900A5A44F /* 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; + 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 = 13.2; + 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; + }; + F19B40D024180E5900A5A44F /* 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; + 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 = 13.2; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + F19B40D224180E5900A5A44F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 2RF92UCMKX; + INFOPLIST_FILE = "DossyTextExample/App Files/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.nelsonje.DossyTextExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + F19B40D324180E5900A5A44F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 2RF92UCMKX; + INFOPLIST_FILE = "DossyTextExample/App Files/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.nelsonje.DossyTextExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + F19B40AD24180E5400A5A44F /* Build configuration list for PBXProject "DossyTextExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F19B40CF24180E5900A5A44F /* Debug */, + F19B40D024180E5900A5A44F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F19B40D124180E5900A5A44F /* Build configuration list for PBXNativeTarget "DossyTextExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F19B40D224180E5900A5A44F /* Debug */, + F19B40D324180E5900A5A44F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = F19B40AA24180E5400A5A44F /* Project object */; +} diff --git a/DossyText.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Example/DossyTextExample/DossyTextExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 67% rename from DossyText.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to Example/DossyTextExample/DossyTextExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 2e2ee07..690c185 100644 --- a/DossyText.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/Example/DossyTextExample/DossyTextExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:DossyTextExample.xcodeproj"> diff --git a/Example/DossyTextExample/DossyTextExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Example/DossyTextExample/DossyTextExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Example/DossyTextExample/DossyTextExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Example/DossyTextExample/DossyTextExample.xcodeproj/project.xcworkspace/xcuserdata/joeynelson.xcuserdatad/UserInterfaceState.xcuserstate b/Example/DossyTextExample/DossyTextExample.xcodeproj/project.xcworkspace/xcuserdata/joeynelson.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..6de19b9c436435f102e38c24ded351b66db3df3a GIT binary patch literal 30066 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 W!u*w}-62WwzhrzLZ4Xhu^8W!r^VH`6 literal 0 HcmV?d00001 diff --git a/DossyText.xcodeproj/xcuserdata/joeynelson.xcuserdatad/xcschemes/xcschememanagement.plist b/Example/DossyTextExample/DossyTextExample.xcodeproj/xcuserdata/joeynelson.xcuserdatad/xcschemes/xcschememanagement.plist similarity index 62% rename from DossyText.xcodeproj/xcuserdata/joeynelson.xcuserdatad/xcschemes/xcschememanagement.plist rename to Example/DossyTextExample/DossyTextExample.xcodeproj/xcuserdata/joeynelson.xcuserdatad/xcschemes/xcschememanagement.plist index d19d254..ff9f18d 100644 --- a/DossyText.xcodeproj/xcuserdata/joeynelson.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Example/DossyTextExample/DossyTextExample.xcodeproj/xcuserdata/joeynelson.xcuserdatad/xcschemes/xcschememanagement.plist @@ -4,19 +4,11 @@ SchemeUserState - DossyText.xcscheme + DossyTextExample.xcscheme_^#shared#^_ orderHint 0 - SuppressBuildableAutocreation - - F1B4AF641F12708F004A88D5 - - primary - - - diff --git a/Example/DossyTextExample/DossyTextExample/App Files/AppDelegate.swift b/Example/DossyTextExample/DossyTextExample/App Files/AppDelegate.swift new file mode 100644 index 0000000..e36dc9e --- /dev/null +++ b/Example/DossyTextExample/DossyTextExample/App Files/AppDelegate.swift @@ -0,0 +1,23 @@ +// +// AppDelegate.swift +// DossyTextExample +// +// Created by Joey Nelson on 3/10/20. +// Copyright © 2020 nelsonje. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + return true + } + + // MARK: UISceneSession Lifecycle + func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + } +} + diff --git a/Example/DossyTextExample/DossyTextExample/App Files/Assets.xcassets/AppIcon.appiconset/Contents.json b/Example/DossyTextExample/DossyTextExample/App Files/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d8db8d6 --- /dev/null +++ b/Example/DossyTextExample/DossyTextExample/App Files/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/Example/DossyTextExample/DossyTextExample/App Files/Assets.xcassets/Contents.json b/Example/DossyTextExample/DossyTextExample/App Files/Assets.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/Example/DossyTextExample/DossyTextExample/App Files/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Example/DossyTextExample/DossyTextExample/App Files/Base.lproj/LaunchScreen.storyboard b/Example/DossyTextExample/DossyTextExample/App Files/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..b701060 --- /dev/null +++ b/Example/DossyTextExample/DossyTextExample/App Files/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/DossyTextExample/DossyTextExample/App Files/Greenscr.ttf b/Example/DossyTextExample/DossyTextExample/App Files/Greenscr.ttf new file mode 100755 index 0000000000000000000000000000000000000000..a4497bedc928ec6f5e3a4dad98acc3a2018974af GIT binary patch literal 21000 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 literal 0 HcmV?d00001 diff --git a/DossyText/Info.plist b/Example/DossyTextExample/DossyTextExample/App Files/Info.plist similarity index 56% rename from DossyText/Info.plist rename to Example/DossyTextExample/DossyTextExample/App Files/Info.plist index 5c23ea6..af9e75f 100644 --- a/DossyText/Info.plist +++ b/Example/DossyTextExample/DossyTextExample/App Files/Info.plist @@ -2,8 +2,12 @@ + UIAppFonts + + Greenscr.ttf + CFBundleDevelopmentRegion - en + $(DEVELOPMENT_LANGUAGE) CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -13,13 +17,32 @@ CFBundleName $(PRODUCT_NAME) CFBundlePackageType - APPL + $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString 1.0 CFBundleVersion 1 LSRequiresIPhoneOS + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + LaunchScreen + + + + UILaunchStoryboardName LaunchScreen UIMainStoryboardFile @@ -31,6 +54,11 @@ UISupportedInterfaceOrientations UIInterfaceOrientationPortrait + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight diff --git a/Example/DossyTextExample/DossyTextExample/App Files/SceneDelegate.swift b/Example/DossyTextExample/DossyTextExample/App Files/SceneDelegate.swift new file mode 100644 index 0000000..0c02996 --- /dev/null +++ b/Example/DossyTextExample/DossyTextExample/App Files/SceneDelegate.swift @@ -0,0 +1,24 @@ +// +// SceneDelegate.swift +// DossyTextExample +// +// Created by Joey Nelson on 3/10/20. +// Copyright © 2020 nelsonje. All rights reserved. +// + +import UIKit + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + var window: UIWindow? + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + guard let windowScene = (scene as? UIWindowScene) else { return } + let root = ViewController() + window = UIWindow(frame: windowScene.coordinateSpace.bounds) + window?.windowScene = windowScene + window?.rootViewController = root + window?.makeKeyAndVisible() + } +} + diff --git a/DossyText/DossyText.swift b/Example/DossyTextExample/DossyTextExample/DossyTextLabel.swift similarity index 96% rename from DossyText/DossyText.swift rename to Example/DossyTextExample/DossyTextExample/DossyTextLabel.swift index 8fa2682..6bf0a7c 100644 --- a/DossyText/DossyText.swift +++ b/Example/DossyTextExample/DossyTextExample/DossyTextLabel.swift @@ -3,9 +3,8 @@ // DossyText // // Created by Joey Nelson on 7/9/17. -// Copyright © 2017 NelsonJE. All rights reserved. +// Copyright © 2017 nelsonje. All rights reserved. // - import UIKit public protocol DossyTextLabelDelegate { @@ -55,7 +54,6 @@ open class DossyTextLabel: UILabel { blinking = true } - /** Blinks the blnking box for specified TimeInterval. - Parameter interval: The specified interval. @@ -86,7 +84,7 @@ open class DossyTextLabel: UILabel { } /// Will force the blinking box to stop blinking - public func stopBlinking() { + @objc public func stopBlinking() { state = .idle } @@ -113,7 +111,7 @@ open class DossyTextLabel: UILabel { DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(millisecondsPerLetter)) { let stripped = self.fullText.replacingOccurrences(of: self.currentText, with: "") - guard let char = stripped.characters.first else { return } + guard let char = stripped.first else { return } self.currentText = self.currentText + String(describing: char) self.text = self.currentText self.type() @@ -142,4 +140,3 @@ open class DossyTextLabel: UILabel { state = .idle } } - diff --git a/Example/DossyTextExample/DossyTextExample/ViewController.swift b/Example/DossyTextExample/DossyTextExample/ViewController.swift new file mode 100644 index 0000000..83f3f39 --- /dev/null +++ b/Example/DossyTextExample/DossyTextExample/ViewController.swift @@ -0,0 +1,47 @@ +// +// ViewController.swift +// DossyTextExample +// +// Created by Joey Nelson on 3/10/20. +// Copyright © 2020 nelsonje. All rights reserved. +// + +import UIKit + +class ViewController: UIViewController { + + let label = DossyTextLabel() + + override func viewDidLoad() { + super.viewDidLoad() + + for family: String in UIFont.familyNames { + print("\(family)") + for names: String in UIFont.fontNames(forFamilyName: family) { + print("== \(names)") + } + } + + view.backgroundColor = .white + + label.font = UIFont(name: "GreenScreen", size: 24) + label.delegate = self + label.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(label) + NSLayoutConstraint.activate([ + label.centerYAnchor.constraint(equalTo: view.centerYAnchor), + label.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 12), + label.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -12), + ]) + } + + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + + label.type("Goodbye cruel world!") + } +} + +extension ViewController: DossyTextLabelDelegate { + +}