From 4461eb428bb32b0fed4e1382f307680218cf3940 Mon Sep 17 00:00:00 2001 From: Basti SK Date: Sun, 14 Apr 2024 14:23:48 +0200 Subject: [PATCH] improvements in UI and Icons --- TreeMeasure.xcodeproj/project.pbxproj | 10 +- .../AppIcon~ios-marketing.png | Bin 0 -> 39217 bytes .../AppIcon.appiconset/Contents.json | 1 + .../Image.imageset/AppIcon~ios-marketing.png | Bin 0 -> 39217 bytes .../Image.imageset/Contents.json | 21 ++ .../Base.lproj/LaunchScreen.storyboard | 29 ++- TreeMeasure/Base.lproj/Main.storyboard | 212 +++++++++++------- TreeMeasure/ViewController.swift | 22 +- 8 files changed, 198 insertions(+), 97 deletions(-) create mode 100644 TreeMeasure/Assets.xcassets/AppIcon.appiconset/AppIcon~ios-marketing.png create mode 100644 TreeMeasure/Assets.xcassets/Image.imageset/AppIcon~ios-marketing.png create mode 100644 TreeMeasure/Assets.xcassets/Image.imageset/Contents.json diff --git a/TreeMeasure.xcodeproj/project.pbxproj b/TreeMeasure.xcodeproj/project.pbxproj index 1c6c410..d7a0bfa 100644 --- a/TreeMeasure.xcodeproj/project.pbxproj +++ b/TreeMeasure.xcodeproj/project.pbxproj @@ -290,16 +290,19 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 774CCSDT3V; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = TreeMeasure/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = "Tree Height"; INFOPLIST_KEY_NSCameraUsageDescription = "Cam for images"; INFOPLIST_KEY_NSMotionUsageDescription = "uses motion"; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen.storyboard; INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UIRequiresFullScreen = YES; INFOPLIST_KEY_UISupportedInterfaceOrientations = ""; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = UIInterfaceOrientationPortrait; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = UIInterfaceOrientationPortrait; @@ -321,16 +324,19 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 774CCSDT3V; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = TreeMeasure/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = "Tree Height"; INFOPLIST_KEY_NSCameraUsageDescription = "Cam for images"; INFOPLIST_KEY_NSMotionUsageDescription = "uses motion"; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen.storyboard; INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UIRequiresFullScreen = YES; INFOPLIST_KEY_UISupportedInterfaceOrientations = ""; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = UIInterfaceOrientationPortrait; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = UIInterfaceOrientationPortrait; diff --git a/TreeMeasure/Assets.xcassets/AppIcon.appiconset/AppIcon~ios-marketing.png b/TreeMeasure/Assets.xcassets/AppIcon.appiconset/AppIcon~ios-marketing.png new file mode 100644 index 0000000000000000000000000000000000000000..5d237096994da332ab837a656441cfaabaeed3ba GIT binary patch literal 39217 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

};23^-bVg`}L5-O#C1 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 NYfHO5g}Xh@{|lV=WNZKc literal 0 HcmV?d00001 diff --git a/TreeMeasure/Assets.xcassets/AppIcon.appiconset/Contents.json b/TreeMeasure/Assets.xcassets/AppIcon.appiconset/Contents.json index 13613e3..16a4fbc 100644 --- a/TreeMeasure/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/TreeMeasure/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,6 +1,7 @@ { "images" : [ { + "filename" : "AppIcon~ios-marketing.png", "idiom" : "universal", "platform" : "ios", "size" : "1024x1024" diff --git a/TreeMeasure/Assets.xcassets/Image.imageset/AppIcon~ios-marketing.png b/TreeMeasure/Assets.xcassets/Image.imageset/AppIcon~ios-marketing.png new file mode 100644 index 0000000000000000000000000000000000000000..5d237096994da332ab837a656441cfaabaeed3ba GIT binary patch literal 39217 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

};23^-bVg`}L5-O#C1 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 NYfHO5g}Xh@{|lV=WNZKc literal 0 HcmV?d00001 diff --git a/TreeMeasure/Assets.xcassets/Image.imageset/Contents.json b/TreeMeasure/Assets.xcassets/Image.imageset/Contents.json new file mode 100644 index 0000000..705ca7b --- /dev/null +++ b/TreeMeasure/Assets.xcassets/Image.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "AppIcon~ios-marketing.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/TreeMeasure/Base.lproj/LaunchScreen.storyboard b/TreeMeasure/Base.lproj/LaunchScreen.storyboard index 865e932..a0a5e24 100644 --- a/TreeMeasure/Base.lproj/LaunchScreen.storyboard +++ b/TreeMeasure/Base.lproj/LaunchScreen.storyboard @@ -1,7 +1,8 @@ - - + + + - + @@ -11,15 +12,31 @@ - + - + + + + + + + + - + + + + diff --git a/TreeMeasure/Base.lproj/Main.storyboard b/TreeMeasure/Base.lproj/Main.storyboard index 2ff2740..a00fd2a 100644 --- a/TreeMeasure/Base.lproj/Main.storyboard +++ b/TreeMeasure/Base.lproj/Main.storyboard @@ -3,7 +3,7 @@ - + @@ -18,93 +18,131 @@ - + - + - - + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + Status +1 +2 + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + @@ -113,7 +151,7 @@ - + @@ -127,12 +165,11 @@ - - - - - - + + + + + @@ -142,5 +179,8 @@ + + + diff --git a/TreeMeasure/ViewController.swift b/TreeMeasure/ViewController.swift index 5acbdb2..e4c56dd 100644 --- a/TreeMeasure/ViewController.swift +++ b/TreeMeasure/ViewController.swift @@ -22,6 +22,7 @@ class ViewController: UIViewController { var captureSession: AVCaptureSession! var videoPreviewLayer: AVCaptureVideoPreviewLayer! var globalQueue: OperationQueue! + @IBOutlet weak var distanceText: UITextView! var backCamera: AVCaptureDevice! // VariablesForCalculations @@ -88,6 +89,16 @@ class ViewController: UIViewController { motionManager.stopDeviceMotionUpdates() } + @IBAction func reset() { + topTree = 0 + bottomPole = 0 + topPole = 0 + + statusText.text = "To start, please snapshot the top of the reference height." + distanceText.text = "" + + } + @IBAction func addMarker() { let l = Double(inputRefHeight.text ?? "1.0") ?? 1.0 @@ -99,7 +110,7 @@ class ViewController: UIViewController { topPole = globalAttitude * -1 } - statusText.text = "Snaphost Angle: " + String(format: "%.2f", globalDegrees) + "°.\nNext, snapshot the bottom of the reference height." + statusText.text = "Snaphost Angle: " + String(format: "%.2f", globalDegrees) + "°.\nNext, snapshot bottom of reference height." return; } @@ -109,7 +120,12 @@ class ViewController: UIViewController { if globalGravityAngle < 0 { bottomPole = bottomPole * -1 } - statusText.text = "Snapshot Angle: " + String(format: "%.2f", globalDegrees) + "°\nFinally, snapshot the top of the tree." + statusText.text = "Snapshot Angle: " + String(format: "%.2f", globalDegrees) + "°\nFinally, snapshot top ofx tree." + + let alpha3 = topPole - Double.pi / 2 + let alpha2 = bottomPole - Double.pi / 2 + let e = abs(l / ( tan(alpha3) - tan(alpha2))) + distanceText.text = "Distance: " + String(format: "%.2f", e) + " m" return; } @@ -131,7 +147,7 @@ class ViewController: UIViewController { let h = abs(h1 - h2) - statusText.text = "Height: " + String( format: "%.4f", h) + " m\nSnapshot top of the reference height to measure again." + statusText.text = "Height: " + String( format: "%.4f", h) + " m" //reset topTree = 0