From a64d9764e33c4535d8ac58e2c92aa79728a30673 Mon Sep 17 00:00:00 2001 From: Mallikarjun Hanagandi Date: Mon, 4 Apr 2022 17:34:42 +0530 Subject: [PATCH] Timer example added --- Timer/.DS_Store | Bin 0 -> 6148 bytes Timer/Timer.xcodeproj/project.pbxproj | 347 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 27979 bytes .../xcschemes/xcschememanagement.plist | 14 + Timer/Timer/AppDelegate.swift | 37 ++ .../AppIcon.appiconset/Contents.json | 98 +++++ Timer/Timer/Assets.xcassets/Contents.json | 6 + .../Timer/Base.lproj/LaunchScreen.storyboard | 25 ++ Timer/Timer/Base.lproj/Main.storyboard | 57 +++ Timer/Timer/Extensions.swift | 23 ++ Timer/Timer/Info.plist | 62 ++++ Timer/Timer/SceneDelegate.swift | 53 +++ Timer/Timer/ViewController.swift | 65 ++++ 15 files changed, 802 insertions(+) create mode 100644 Timer/.DS_Store create mode 100644 Timer/Timer.xcodeproj/project.pbxproj create mode 100644 Timer/Timer.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Timer/Timer.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 Timer/Timer.xcodeproj/project.xcworkspace/xcuserdata/adda.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 Timer/Timer.xcodeproj/xcuserdata/adda.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 Timer/Timer/AppDelegate.swift create mode 100644 Timer/Timer/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Timer/Timer/Assets.xcassets/Contents.json create mode 100644 Timer/Timer/Base.lproj/LaunchScreen.storyboard create mode 100644 Timer/Timer/Base.lproj/Main.storyboard create mode 100644 Timer/Timer/Extensions.swift create mode 100644 Timer/Timer/Info.plist create mode 100644 Timer/Timer/SceneDelegate.swift create mode 100644 Timer/Timer/ViewController.swift diff --git a/Timer/.DS_Store b/Timer/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..7708d9c6df41a3ced761462386bc3d5f929895a9 GIT binary patch literal 6148 zcmeHKT}lHn5dKE{Q1HP%>RV1A)DvvWdV+cYX}9=8mtBNHANL5}!Hb9|@hElIOU`8FpBqK{YVZU+mJo zALA0YsIkWW{?};PZg97`o-S5R-P-maAHHVPO<68C&61HS+|&8#^XxmU>Iba$W`B1t zTqZ0O2n9lcP#_feQ~}=EYU3lrs6&BJAQX64K+lK7qF6X~hWY4Vl~VwsKBKeI*IYt5 z$+2+k3^_s*qY{lOo??j6*`GYFaO@0?4)NqeeC4;~Me^#LKjm;pVHkBN5DN4aIJD+O z@Ba(_GJ{EepAxN5AQbp#3dpEjlyiQR->n}$Pw(2qa>b&iah*Ce`n^X08+wkMNBoz>#JOr{JQH27(puj7Rhc`?B literal 0 HcmV?d00001 diff --git a/Timer/Timer.xcodeproj/project.pbxproj b/Timer/Timer.xcodeproj/project.pbxproj new file mode 100644 index 0000000..bc3d326 --- /dev/null +++ b/Timer/Timer.xcodeproj/project.pbxproj @@ -0,0 +1,347 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 6CB2633B2432F9C000CC97A8 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CB2633A2432F9C000CC97A8 /* AppDelegate.swift */; }; + 6CB2633D2432F9C000CC97A8 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CB2633C2432F9C000CC97A8 /* SceneDelegate.swift */; }; + 6CB2633F2432F9C000CC97A8 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CB2633E2432F9C000CC97A8 /* ViewController.swift */; }; + 6CB263422432F9C000CC97A8 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6CB263402432F9C000CC97A8 /* Main.storyboard */; }; + 6CB263442432F9C400CC97A8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6CB263432432F9C400CC97A8 /* Assets.xcassets */; }; + 6CB263472432F9C400CC97A8 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6CB263452432F9C400CC97A8 /* LaunchScreen.storyboard */; }; + 6CB2634F24330FC200CC97A8 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CB2634E24330FC200CC97A8 /* Extensions.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 6CB263372432F9C000CC97A8 /* Timer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Timer.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 6CB2633A2432F9C000CC97A8 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 6CB2633C2432F9C000CC97A8 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + 6CB2633E2432F9C000CC97A8 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 6CB263412432F9C000CC97A8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 6CB263432432F9C400CC97A8 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 6CB263462432F9C400CC97A8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 6CB263482432F9C400CC97A8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 6CB2634E24330FC200CC97A8 /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 6CB263342432F9C000CC97A8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 6CB2632E2432F9C000CC97A8 = { + isa = PBXGroup; + children = ( + 6CB263392432F9C000CC97A8 /* Timer */, + 6CB263382432F9C000CC97A8 /* Products */, + ); + sourceTree = ""; + }; + 6CB263382432F9C000CC97A8 /* Products */ = { + isa = PBXGroup; + children = ( + 6CB263372432F9C000CC97A8 /* Timer.app */, + ); + name = Products; + sourceTree = ""; + }; + 6CB263392432F9C000CC97A8 /* Timer */ = { + isa = PBXGroup; + children = ( + 6CB2633A2432F9C000CC97A8 /* AppDelegate.swift */, + 6CB2633C2432F9C000CC97A8 /* SceneDelegate.swift */, + 6CB2633E2432F9C000CC97A8 /* ViewController.swift */, + 6CB2634E24330FC200CC97A8 /* Extensions.swift */, + 6CB263402432F9C000CC97A8 /* Main.storyboard */, + 6CB263432432F9C400CC97A8 /* Assets.xcassets */, + 6CB263452432F9C400CC97A8 /* LaunchScreen.storyboard */, + 6CB263482432F9C400CC97A8 /* Info.plist */, + ); + path = Timer; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 6CB263362432F9C000CC97A8 /* Timer */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6CB2634B2432F9C400CC97A8 /* Build configuration list for PBXNativeTarget "Timer" */; + buildPhases = ( + 6CB263332432F9C000CC97A8 /* Sources */, + 6CB263342432F9C000CC97A8 /* Frameworks */, + 6CB263352432F9C000CC97A8 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Timer; + productName = Timer; + productReference = 6CB263372432F9C000CC97A8 /* Timer.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 6CB2632F2432F9C000CC97A8 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1130; + LastUpgradeCheck = 1130; + ORGANIZATIONNAME = ADDA; + TargetAttributes = { + 6CB263362432F9C000CC97A8 = { + CreatedOnToolsVersion = 11.3.1; + }; + }; + }; + buildConfigurationList = 6CB263322432F9C000CC97A8 /* Build configuration list for PBXProject "Timer" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 6CB2632E2432F9C000CC97A8; + productRefGroup = 6CB263382432F9C000CC97A8 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 6CB263362432F9C000CC97A8 /* Timer */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 6CB263352432F9C000CC97A8 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6CB263472432F9C400CC97A8 /* LaunchScreen.storyboard in Resources */, + 6CB263442432F9C400CC97A8 /* Assets.xcassets in Resources */, + 6CB263422432F9C000CC97A8 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 6CB263332432F9C000CC97A8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6CB2633F2432F9C000CC97A8 /* ViewController.swift in Sources */, + 6CB2633B2432F9C000CC97A8 /* AppDelegate.swift in Sources */, + 6CB2633D2432F9C000CC97A8 /* SceneDelegate.swift in Sources */, + 6CB2634F24330FC200CC97A8 /* Extensions.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 6CB263402432F9C000CC97A8 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 6CB263412432F9C000CC97A8 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 6CB263452432F9C400CC97A8 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 6CB263462432F9C400CC97A8 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 6CB263492432F9C400CC97A8 /* 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; + }; + 6CB2634A2432F9C400CC97A8 /* 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; + }; + 6CB2634C2432F9C400CC97A8 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 8X8K65YZ98; + INFOPLIST_FILE = Timer/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = mallikarjun.Timer; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 6CB2634D2432F9C400CC97A8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 8X8K65YZ98; + INFOPLIST_FILE = Timer/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = mallikarjun.Timer; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 6CB263322432F9C000CC97A8 /* Build configuration list for PBXProject "Timer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6CB263492432F9C400CC97A8 /* Debug */, + 6CB2634A2432F9C400CC97A8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 6CB2634B2432F9C400CC97A8 /* Build configuration list for PBXNativeTarget "Timer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6CB2634C2432F9C400CC97A8 /* Debug */, + 6CB2634D2432F9C400CC97A8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 6CB2632F2432F9C000CC97A8 /* Project object */; +} diff --git a/Timer/Timer.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Timer/Timer.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..5dae58e --- /dev/null +++ b/Timer/Timer.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Timer/Timer.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Timer/Timer.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Timer/Timer.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Timer/Timer.xcodeproj/project.xcworkspace/xcuserdata/adda.xcuserdatad/UserInterfaceState.xcuserstate b/Timer/Timer.xcodeproj/project.xcworkspace/xcuserdata/adda.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..03c2c83fdb5c06c8a88dd9a7ed5484dab481be85 GIT binary patch literal 27979 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 Rr0{7c1c7gVQ4V|Xe*rEM&Kv*$ literal 0 HcmV?d00001 diff --git a/Timer/Timer.xcodeproj/xcuserdata/adda.xcuserdatad/xcschemes/xcschememanagement.plist b/Timer/Timer.xcodeproj/xcuserdata/adda.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..b239a57 --- /dev/null +++ b/Timer/Timer.xcodeproj/xcuserdata/adda.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + Timer.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/Timer/Timer/AppDelegate.swift b/Timer/Timer/AppDelegate.swift new file mode 100644 index 0000000..372df6a --- /dev/null +++ b/Timer/Timer/AppDelegate.swift @@ -0,0 +1,37 @@ +// +// AppDelegate.swift +// Timer +// +// Created by Mallikarjun on 31/03/20. +// Copyright © 2020 ADDA. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + // MARK: UISceneSession Lifecycle + + func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + } + + func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. + } + + +} + diff --git a/Timer/Timer/Assets.xcassets/AppIcon.appiconset/Contents.json b/Timer/Timer/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d8db8d6 --- /dev/null +++ b/Timer/Timer/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/Timer/Timer/Assets.xcassets/Contents.json b/Timer/Timer/Assets.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/Timer/Timer/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Timer/Timer/Base.lproj/LaunchScreen.storyboard b/Timer/Timer/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/Timer/Timer/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Timer/Timer/Base.lproj/Main.storyboard b/Timer/Timer/Base.lproj/Main.storyboard new file mode 100644 index 0000000..7815749 --- /dev/null +++ b/Timer/Timer/Base.lproj/Main.storyboard @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Timer/Timer/Extensions.swift b/Timer/Timer/Extensions.swift new file mode 100644 index 0000000..4b96996 --- /dev/null +++ b/Timer/Timer/Extensions.swift @@ -0,0 +1,23 @@ +// +// Extensions.swift +// Timer +// +// Created by Mallikarjun on 31/03/20. +// Copyright © 2020 ADDA. All rights reserved. +// + +import Foundation +import UIKit + + +extension UIColor { + + static func random() -> UIColor { + + let redValue: CGFloat = .random(in: 0...1) + let greenValue: CGFloat = .random(in: 0...1) + let blueValue: CGFloat = .random(in: 0...1) + + return UIColor(red: redValue, green: greenValue, blue: blueValue, alpha: 1.0) + } +} diff --git a/Timer/Timer/Info.plist b/Timer/Timer/Info.plist new file mode 100644 index 0000000..b5f9c07 --- /dev/null +++ b/Timer/Timer/Info.plist @@ -0,0 +1,62 @@ + + + + + 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 + + + + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/Timer/Timer/SceneDelegate.swift b/Timer/Timer/SceneDelegate.swift new file mode 100644 index 0000000..5d139af --- /dev/null +++ b/Timer/Timer/SceneDelegate.swift @@ -0,0 +1,53 @@ +// +// SceneDelegate.swift +// Timer +// +// Created by Mallikarjun on 31/03/20. +// Copyright © 2020 ADDA. All rights reserved. +// + +import UIKit + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + var window: UIWindow? + + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + guard let _ = (scene as? UIWindowScene) else { return } + } + + func sceneDidDisconnect(_ scene: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_ scene: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_ scene: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_ scene: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_ scene: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } + + +} + diff --git a/Timer/Timer/ViewController.swift b/Timer/Timer/ViewController.swift new file mode 100644 index 0000000..6aa0a8b --- /dev/null +++ b/Timer/Timer/ViewController.swift @@ -0,0 +1,65 @@ +// +// ViewController.swift +// Timer +// +// Created by Mallikarjun on 31/03/20. +// Copyright © 2020 ADDA. All rights reserved. +// + +import UIKit + +class ViewController: UIViewController { + + @IBOutlet weak var timeLabel: UILabel! + @IBOutlet weak var label2: UILabel! + + + var timer: Timer! + var count = 0 + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + + self.timeLabel.text = "" + self.label2.text = "" + + //Changing Background Color + // timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(updateBackgroundColor), userInfo: nibName, repeats: true) + + //Increase count for Label + timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(updateCountValueAtLabel), userInfo: nibName, repeats: true) + } + + //MARK: Changing background Color or VC for Every Seconds (Based on time u gave) + @objc func updateBackgroundColor() { + view.backgroundColor = .random() + + //Following code written to stop the timer (Chanding backfround color state after 10 seconds) + DispatchQueue.main.asyncAfter(deadline: .now() + 10) { + + self.timer.invalidate() + } + } + + //MARK: Updating label label - With Count + @objc func updateCountValueAtLabel() { + + count = count + 1 + self.timeLabel.text = "\(count)" + + //you can stop the updating label in condition like if count == 20 then stop the updating label + if count == 10 { + timer.invalidate() + self.label2.text = "Timer Stoped After 10 Seconds" + } + } + + + override func viewWillDisappear(_ animated: Bool) { + self.viewWillDisappear(animated) + timer.invalidate() + } +} + +