feat: 🎨 Add app icon
@ -14,6 +14,7 @@
|
|||||||
2CCE3EAD2AF67A9000BB0ED3 /* UtilsFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CCE3EAC2AF67A9000BB0ED3 /* UtilsFunctions.swift */; };
|
2CCE3EAD2AF67A9000BB0ED3 /* UtilsFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CCE3EAC2AF67A9000BB0ED3 /* UtilsFunctions.swift */; };
|
||||||
2CCE3EAF2AF67BA900BB0ED3 /* BinaryConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CCE3EAE2AF67BA900BB0ED3 /* BinaryConverter.swift */; };
|
2CCE3EAF2AF67BA900BB0ED3 /* BinaryConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CCE3EAE2AF67BA900BB0ED3 /* BinaryConverter.swift */; };
|
||||||
2CCE3EB12AF67CFD00BB0ED3 /* HexaConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CCE3EB02AF67CFD00BB0ED3 /* HexaConverter.swift */; };
|
2CCE3EB12AF67CFD00BB0ED3 /* HexaConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CCE3EB02AF67CFD00BB0ED3 /* HexaConverter.swift */; };
|
||||||
|
2CCE3EB52AF6879200BB0ED3 /* OctalConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CCE3EB42AF6879200BB0ED3 /* OctalConverter.swift */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
@ -25,6 +26,7 @@
|
|||||||
2CCE3EAC2AF67A9000BB0ED3 /* UtilsFunctions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UtilsFunctions.swift; sourceTree = "<group>"; };
|
2CCE3EAC2AF67A9000BB0ED3 /* UtilsFunctions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UtilsFunctions.swift; sourceTree = "<group>"; };
|
||||||
2CCE3EAE2AF67BA900BB0ED3 /* BinaryConverter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BinaryConverter.swift; sourceTree = "<group>"; };
|
2CCE3EAE2AF67BA900BB0ED3 /* BinaryConverter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BinaryConverter.swift; sourceTree = "<group>"; };
|
||||||
2CCE3EB02AF67CFD00BB0ED3 /* HexaConverter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HexaConverter.swift; sourceTree = "<group>"; };
|
2CCE3EB02AF67CFD00BB0ED3 /* HexaConverter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HexaConverter.swift; sourceTree = "<group>"; };
|
||||||
|
2CCE3EB42AF6879200BB0ED3 /* OctalConverter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OctalConverter.swift; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
@ -59,6 +61,7 @@
|
|||||||
children = (
|
children = (
|
||||||
2CCE3E9E2AF678B200BB0ED3 /* BinaryConverterApp.swift */,
|
2CCE3E9E2AF678B200BB0ED3 /* BinaryConverterApp.swift */,
|
||||||
2CCE3EA02AF678B200BB0ED3 /* ContentView.swift */,
|
2CCE3EA02AF678B200BB0ED3 /* ContentView.swift */,
|
||||||
|
2CCE3EB42AF6879200BB0ED3 /* OctalConverter.swift */,
|
||||||
2CCE3EB02AF67CFD00BB0ED3 /* HexaConverter.swift */,
|
2CCE3EB02AF67CFD00BB0ED3 /* HexaConverter.swift */,
|
||||||
2CCE3EAE2AF67BA900BB0ED3 /* BinaryConverter.swift */,
|
2CCE3EAE2AF67BA900BB0ED3 /* BinaryConverter.swift */,
|
||||||
2CCE3EAC2AF67A9000BB0ED3 /* UtilsFunctions.swift */,
|
2CCE3EAC2AF67A9000BB0ED3 /* UtilsFunctions.swift */,
|
||||||
@ -150,6 +153,7 @@
|
|||||||
2CCE3EAF2AF67BA900BB0ED3 /* BinaryConverter.swift in Sources */,
|
2CCE3EAF2AF67BA900BB0ED3 /* BinaryConverter.swift in Sources */,
|
||||||
2CCE3EAD2AF67A9000BB0ED3 /* UtilsFunctions.swift in Sources */,
|
2CCE3EAD2AF67A9000BB0ED3 /* UtilsFunctions.swift in Sources */,
|
||||||
2CCE3EB12AF67CFD00BB0ED3 /* HexaConverter.swift in Sources */,
|
2CCE3EB12AF67CFD00BB0ED3 /* HexaConverter.swift in Sources */,
|
||||||
|
2CCE3EB52AF6879200BB0ED3 /* OctalConverter.swift in Sources */,
|
||||||
2CCE3E9F2AF678B200BB0ED3 /* BinaryConverterApp.swift in Sources */,
|
2CCE3E9F2AF678B200BB0ED3 /* BinaryConverterApp.swift in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@ -287,11 +291,13 @@
|
|||||||
DEVELOPMENT_TEAM = KK24298HY5;
|
DEVELOPMENT_TEAM = KK24298HY5;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
|
INFOPLIST_KEY_CFBundleDisplayName = "Binary Converter";
|
||||||
|
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.education";
|
||||||
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
||||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||||
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
||||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
|
||||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
@ -299,9 +305,12 @@
|
|||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = fr.louisgallet.BinaryConverter;
|
PRODUCT_BUNDLE_IDENTIFIER = fr.louisgallet.BinaryConverter;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||||
|
SUPPORTS_MACCATALYST = NO;
|
||||||
|
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = 1;
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
@ -316,11 +325,13 @@
|
|||||||
DEVELOPMENT_TEAM = KK24298HY5;
|
DEVELOPMENT_TEAM = KK24298HY5;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
|
INFOPLIST_KEY_CFBundleDisplayName = "Binary Converter";
|
||||||
|
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.education";
|
||||||
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
||||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||||
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
||||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
|
||||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
@ -328,9 +339,12 @@
|
|||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = fr.louisgallet.BinaryConverter;
|
PRODUCT_BUNDLE_IDENTIFIER = fr.louisgallet.BinaryConverter;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||||
|
SUPPORTS_MACCATALYST = NO;
|
||||||
|
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = 1;
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
};
|
};
|
||||||
|
BIN
BinaryConverter/Assets.xcassets/AppIcon.appiconset/1024.png
Normal file
After Width: | Height: | Size: 78 KiB |
BIN
BinaryConverter/Assets.xcassets/AppIcon.appiconset/114.png
Normal file
After Width: | Height: | Size: 5.2 KiB |
BIN
BinaryConverter/Assets.xcassets/AppIcon.appiconset/120.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
BIN
BinaryConverter/Assets.xcassets/AppIcon.appiconset/180.png
Normal file
After Width: | Height: | Size: 9.7 KiB |
BIN
BinaryConverter/Assets.xcassets/AppIcon.appiconset/29.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
BinaryConverter/Assets.xcassets/AppIcon.appiconset/40.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
BinaryConverter/Assets.xcassets/AppIcon.appiconset/57.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
BinaryConverter/Assets.xcassets/AppIcon.appiconset/58.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
BinaryConverter/Assets.xcassets/AppIcon.appiconset/60.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
BinaryConverter/Assets.xcassets/AppIcon.appiconset/80.png
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
BinaryConverter/Assets.xcassets/AppIcon.appiconset/87.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
@ -1,8 +1,75 @@
|
|||||||
{
|
{
|
||||||
"images" : [
|
"images" : [
|
||||||
{
|
{
|
||||||
"idiom" : "universal",
|
"filename" : "40.png",
|
||||||
"platform" : "ios",
|
"idiom" : "iphone",
|
||||||
|
"scale" : "2x",
|
||||||
|
"size" : "20x20"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "60.png",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"scale" : "3x",
|
||||||
|
"size" : "20x20"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "29.png",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"scale" : "1x",
|
||||||
|
"size" : "29x29"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "58.png",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"scale" : "2x",
|
||||||
|
"size" : "29x29"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "87.png",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"scale" : "3x",
|
||||||
|
"size" : "29x29"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "80.png",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"scale" : "2x",
|
||||||
|
"size" : "40x40"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "120.png",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"scale" : "3x",
|
||||||
|
"size" : "40x40"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "57.png",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"scale" : "1x",
|
||||||
|
"size" : "57x57"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "114.png",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"scale" : "2x",
|
||||||
|
"size" : "57x57"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "120.png",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"scale" : "2x",
|
||||||
|
"size" : "60x60"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "180.png",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"scale" : "3x",
|
||||||
|
"size" : "60x60"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "1024.png",
|
||||||
|
"idiom" : "ios-marketing",
|
||||||
|
"scale" : "1x",
|
||||||
"size" : "1024x1024"
|
"size" : "1024x1024"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -20,25 +20,8 @@ struct BinaryConverter: View {
|
|||||||
Text("Your number in base 2: \(binaryNumber)")
|
Text("Your number in base 2: \(binaryNumber)")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// .onChange(of: decimalNumber) {
|
.onChange(of: decimalNumber) { newValue in
|
||||||
// [decimalNumber] newValue in
|
binaryNumber = convertToBinary(newValue)
|
||||||
// if newValue != decimalNumber {
|
|
||||||
// binaryNumber = convertToBinary(newValue)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
.onChange(of: decimalNumber, initial: true, {
|
|
||||||
oldDecimalNumber, NewDecimalNumber in
|
|
||||||
if (oldDecimalNumber != NewDecimalNumber) {
|
|
||||||
binaryNumber = convertToBinary(NewDecimalNumber)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func convertToBinary(_ decimalString: String) -> String {
|
|
||||||
if let decimal = Int(decimalString) {
|
|
||||||
// Perform your base conversion logic here
|
|
||||||
return String(decimal, radix: 2)
|
|
||||||
} else {
|
|
||||||
return "Invalid Input"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,8 +12,8 @@ struct ContentView: View {
|
|||||||
var body: some View {
|
var body: some View {
|
||||||
TabView(selection: $selectedTab,
|
TabView(selection: $selectedTab,
|
||||||
content: {
|
content: {
|
||||||
BinaryConverter().tabItem { Image(systemName: "1.square.fill") ; Text("Binary") }.tag(0)
|
BinaryConverter().tabItem { Image(systemName: "2.square.fill") ; Text("Binary") }.tag(0)
|
||||||
HexaConverter().tabItem { Image(systemName: "2.square.fill") ; Text("Hexa") }.tag(1)
|
HexaConverter().tabItem { Image(systemName: "16.square.fill") ; Text("Hexa") }.tag(1)
|
||||||
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -8,8 +8,21 @@
|
|||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
struct HexaConverter: View {
|
struct HexaConverter: View {
|
||||||
|
@State private var decimalNumber: String = ""
|
||||||
|
@State private var HexadecimalNumber: String = ""
|
||||||
var body: some View {
|
var body: some View {
|
||||||
Text("Hello, Hexa!")
|
Form {
|
||||||
|
Section(header: Text("Base 10")) {
|
||||||
|
TextField("Enter the base 10 number here", text: $decimalNumber)
|
||||||
|
.keyboardType(.numberPad)
|
||||||
|
}
|
||||||
|
Section(header: Text("Base 2")) {
|
||||||
|
Text("Your number in base 16: \(HexadecimalNumber)")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.onChange(of: decimalNumber) { newValue in
|
||||||
|
HexadecimalNumber = convertToBinary(newValue)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
18
BinaryConverter/OctalConverter.swift
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
//
|
||||||
|
// OctalConverter.swift
|
||||||
|
// BinaryConverter
|
||||||
|
//
|
||||||
|
// Created by Louis Gallet on 04/11/2023.
|
||||||
|
//
|
||||||
|
|
||||||
|
import SwiftUI
|
||||||
|
|
||||||
|
struct OctalConverter: View {
|
||||||
|
var body: some View {
|
||||||
|
Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#Preview {
|
||||||
|
OctalConverter()
|
||||||
|
}
|
@ -7,22 +7,25 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
extension BinaryInteger {
|
/// Convert a given number to its binary form
|
||||||
var binaryDescription: String {
|
/// - Parameter decimalString: Your number in base10 in String format
|
||||||
/// Convert a given number to it's binary representation
|
/// - Returns: Return the number in base2 in String format or return "Invalid Input" if the input is not valid
|
||||||
/// source: https://stackoverflow.com/questions/26181221/how-to-convert-a-decimal-number-to-binary-in-swift
|
func convertToBinary(_ decimalString: String) -> String {
|
||||||
var binaryString = ""
|
if let decimal = Int(decimalString) {
|
||||||
var internalNumber = self
|
return String(decimal, radix: 2)
|
||||||
var counter = 0
|
} else {
|
||||||
|
return "Invalid Input"
|
||||||
for _ in (1...self.bitWidth) {
|
}
|
||||||
binaryString.insert(contentsOf: "\(internalNumber & 1)", at: binaryString.startIndex)
|
}
|
||||||
internalNumber >>= 1
|
|
||||||
counter += 1
|
/// Convert a given number to its hexadeciam form
|
||||||
if counter % 4 == 0 {
|
/// - Parameter decimalString: Your number in base10 in String format
|
||||||
binaryString.insert(contentsOf: " ", at: binaryString.startIndex)
|
/// - Returns: Return the number in base16 in String format or return "Invalid Input" if the input is not valid
|
||||||
}
|
func convertToHex(_ decimalString: String) -> String {
|
||||||
}
|
if let number = Int(decimalString) {
|
||||||
return binaryString
|
let hexString = String(number, radix: 16)
|
||||||
|
return hexString.uppercased()
|
||||||
|
} else {
|
||||||
|
return "Invalid Input"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|