- エーオーシステム コーポレートサイト
https://www.aosystem.co.jp/ - エーオーシステム プロダクトサイト
https://ao-system.net/ - レンタルサーバー
- バーチャル展示会
- ウェブカタログサービス
- 3Dグラフィック
- Android アプリ
- iOS (iPhone,iPad) アプリ
- Flutter開発
- プログラミング記録QuickAnswer
- 無料画像素材
- スカイボックス 3D SKY BOX
このページのQRコード
下記アプリの主要なソースコードを公開しています。アプリ開発の参考になれば幸いです。
画像等が別途必要ですので下記情報のみでアプリが完成するものではありません。 アプリは少しずつ機能拡張していますのでストア公開されているアプリと内容が異なる場合があります。 コードはコピーして自由にお使いいただけます。ただし著作権は放棄しておりませんので全部の再掲載はご遠慮ください。部分的に再掲載したり、改変して再掲載するのは構いません。 自身のアプリ作成の参考として個人使用・商用問わず自由にお使いいただけます。 コード記述のお手本を示すものではありません。ミニアプリですので変数名などさほど気遣いしていない部分も有りますし間違いも有るかと思いますので参考程度にお考え下さい。 他の賢者の皆様が公開されているコードを参考にした箇所も含まれます。iOSアプリ開発の熟練者が書いたコードではありません。 エンジニア向け技術情報共有サービスではありませんので説明は省いています。ご了承ください。 GitHubなどへの公開は予定しておりません。
//
// ConstValue.swift
// NumberRoulette
//
// Created by akira ohmachi on 2021/04/06.
//
import SwiftUI
class ConstValue: ObservableObject {
//background
static let colorBg: Color = Color.init(red:0.59,green:0.51,blue:0.33)
//button color
static let colorStart: Color = Color.init(red:0.238, green:0.77, blue:0.387)
static let colorSetting: Color = Color.init(red:0.543, green:0.77, blue:0.289)
static let colorArcArray: Array<Color> = [
Color.init(red: 234 / 256, green: 123 / 256, blue: 132 / 256),
Color.init(red: 240 / 256, green: 196 / 256, blue: 123 / 256),
Color.init(red: 247 / 256, green: 239 / 256, blue: 123 / 256),
Color.init(red: 192 / 256, green: 217 / 256, blue: 139 / 256),
Color.init(red: 123 / 256, green: 197 / 256, blue: 156 / 256),
Color.init(red: 123 / 256, green: 201 / 256, blue: 235 / 256),
Color.init(red: 123 / 256, green: 173 / 256, blue: 211 / 256),
Color.init(red: 138 / 256, green: 139 / 256, blue: 189 / 256),
Color.init(red: 194 / 256, green: 127 / 256, blue: 186 / 256),
Color.init(red: 233 / 256, green: 123 / 256, blue: 185 / 256),
]
static let colorArcs: Array<Color> = [
colorArcArray[0],
colorArcArray[2],
colorArcArray[4],
colorArcArray[6],
colorArcArray[8],
colorArcArray[1],
colorArcArray[3],
colorArcArray[5],
colorArcArray[7],
colorArcArray[9],
colorArcArray[0],
colorArcArray[2],
colorArcArray[4],
colorArcArray[6],
colorArcArray[8],
colorArcArray[1],
colorArcArray[3],
colorArcArray[5],
colorArcArray[7],
colorArcArray[9],
]
static let colorArcDarkArray: Array<Color> = [
Color.init(red: 222 / 256, green: 0 / 256, blue: 17 / 256),
Color.init(red: 234 / 256, green: 145 / 256, blue: 0 / 256),
Color.init(red: 247 / 256, green: 232 / 256, blue: 0 / 256),
Color.init(red: 137 / 256, green: 188 / 256, blue: 30 / 256),
Color.init(red: 0 / 256, green: 147 / 256, blue: 66 / 256),
Color.init(red: 0 / 256, green: 154 / 256, blue: 225 / 256),
Color.init(red: 0 / 256, green: 101 / 256, blue: 176 / 256),
Color.init(red: 28 / 256, green: 31 / 256, blue: 131 / 256),
Color.init(red: 140 / 256, green: 7 / 256, blue: 126 / 256),
Color.init(red: 220 / 256, green: 0 / 256, blue: 123 / 256),
]
static let colorArcDarks: Array<Color> = [
colorArcDarkArray[0],
colorArcDarkArray[2],
colorArcDarkArray[4],
colorArcDarkArray[6],
colorArcDarkArray[8],
colorArcDarkArray[1],
colorArcDarkArray[3],
colorArcDarkArray[5],
colorArcDarkArray[7],
colorArcDarkArray[9],
colorArcDarkArray[0],
colorArcDarkArray[2],
colorArcDarkArray[4],
colorArcDarkArray[6],
colorArcDarkArray[8],
colorArcDarkArray[1],
colorArcDarkArray[3],
colorArcDarkArray[5],
colorArcDarkArray[7],
colorArcDarkArray[9],
]
}
//
// ContentView.swift
// NumberRoulette
//
// Created by akira ohmachi on 2021/04/06.
//
import SwiftUI
struct ContentView: View {
@EnvironmentObject var pub: PublicManager
@State private var choiceResult: String = ""
@State private var busyFlag: Bool = false
@State private var destroyFlag: Bool = false
@State private var colorBg: Color = Color.white
@State private var itemRateSum: Int = 0
@State private var actionState: Int = 0
@State private var actionCount: Int = 0
@State private var actionAngle: Double = 0.0
struct ArcState {
var start: Double
var end: Double
var color1: Color
var color2: Color
var name: String
init(start: Double, end: Double, color1: Color, color2: Color, name: String) {
self.start = start
self.end = end
self.color1 = color1
self.color2 = color2
self.name = name
}
func isDraw() -> Bool {
if self.start == 0.0 && self.end == 0.0 {
return false
}
return true
}
mutating func setHidden() {
self.start = 0.0
self.end = 0.0
}
}
//start=0,end=0の場合は描画しない
@State private var arcs: Array<ArcState> = [
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
ArcState(start: 0, end: 0, color1: Color.black, color2: Color.black, name: ""),
]
//doubleを入力用stringに変換
func itemRatioValue(num: Double) -> String {
if num == 0.0 {
return ""
} else {
let numInt: Int = Int(num)
if Double(numInt) == num {
return String(numInt)
} else {
return String(num)
}
}
}
var body: some View {
NavigationView {
GeometryReader { bodyView in
VStack(spacing: 0) {
HStack(spacing: 0) {
Button(action:{
self.startRoulette()
}){
Text("start")
.frame(width: bodyView.size.width / 4 * 3, height: bodyView.size.height / 6, alignment: .center)
.background(ConstValue.colorStart)
.foregroundColor(Color.white)
.font(.title2)
}
Rectangle().fill(Color.white).frame(width: 2, height: bodyView.size.height / 6)
NavigationLink(destination: SettingView(),isActive: self.$pub.isSetting) {
Button(action:{
if (self.busyFlag) {
return
}
self.pub.tmpNumberMin = String(self.pub.numberMin)
self.pub.tmpNumberMax = String(self.pub.numberMax)
self.pub.tmpNumberReverse = self.pub.numberReverse
self.pub.tmpNumberRandom = self.pub.numberRandom
self.pub.tmpShortTime = self.pub.shortTime
self.pub.isSetting = true
}){
Text("setting")
.frame(width: bodyView.size.width / 4, height: bodyView.size.height / 6, alignment: .center)
.background(ConstValue.colorSetting)
.foregroundColor(Color.white)
.font(.title2)
}
}
}
.frame(width: bodyView.size.width, height: bodyView.size.height / 6)
Rectangle().fill(Color.white).frame(width: bodyView.size.width, height: 2)
ZStack(alignment: .bottom) {
ScrollView {
Spacer(minLength: bodyView.size.height / 40)
Text(self.choiceResult).animation(.none)
Spacer(minLength: bodyView.size.height / 40)
ZStack {
self.baseArc(size: bodyView.size.width)
ForEach(0..<self.arcs.count) {
if self.arcs[$0].isDraw() {
self.fillArc(start: self.arcs[$0].start, end: self.arcs[$0].end, color1: self.arcs[$0].color1, color2: self.arcs[$0].color2, size: bodyView.size.width)
}
}
ForEach(0..<self.arcs.count) {
if self.arcs[$0].isDraw() {
self.arcText(start: self.arcs[$0].start, end: self.arcs[$0].end, name: arcs[$0].name, size: bodyView.size.width)
}
}
}
Spacer(minLength: 150)
}
HStack(spacing: 0) {
Spacer(minLength: 0)
PublicManager.AdView().frame(maxWidth: bodyView.size.width, maxHeight: 50)
Spacer(minLength: 0)
}.background(Color(red: 0.2,green: 0.2,blue: 0.2))
}
}
.background(self.colorBg)
//.navigationBarTitle("")
.navigationBarHidden(true)
}
}
.navigationViewStyle(StackNavigationViewStyle())
.onAppear { //アプリ起動時に実行
self.initItemData()
self.drawRoulette()
}
.onChange(of: self.pub.isSetting) { _ in //SettingViewからの戻り
if self.pub.isSetting == false {
self.initItemData()
self.drawRoulette()
}
}
.onDisappear { //アプリ終了時
self.destroyFlag = true
}
}
private func startRoulette() {
if self.busyFlag {
return
}
self.busyFlag = true
self.initItemData()
self.actionState = 0
self.actionCount = 0
self.actionTimeline()
}
private func initItemData() {
if self.pub.numberMin > self.pub.numberMax {
let tmp: Int = self.pub.numberMin
self.pub.numberMin = self.pub.numberMax
self.pub.numberMax = tmp
} else if self.pub.numberMin == self.pub.numberMax {
self.pub.numberMax += 1
}
self.pub.numberMax = min(self.pub.numberMax, self.pub.numberMin + self.arcs.count - 1)
//合計値
self.itemRateSum = self.pub.numberMax - self.pub.numberMin + 1
//数字用意
var numbers: Array<Int> = []
var c: Int = 0
for i in self.pub.numberMin ... self.pub.numberMax {
numbers.append(i)
c += 1
}
if self.pub.numberRandom {
numbers = numbers.shuffled()
} else if self.pub.numberReverse {
numbers = numbers.reversed()
}
//Viewの状態を初期化
for i in 0..<self.arcs.count {
self.arcs[i].setHidden()
}
//Viewの値をセット
for i in 0..<numbers.count {
self.arcs[i].color1 = ConstValue.colorArcs[i % 10]
self.arcs[i].color2 = ConstValue.colorArcDarks[i % 10]
self.arcs[i].name = String(numbers[i])
}
}
//animation
private func actionTimeline() {
withAnimation {
if self.destroyFlag {
return
}
self.drawRoulette()
if self.actionState == 0 {
self.actionAngle += Double(self.actionCount)
self.actionCount += 1
if self.actionCount > 50 {
self.actionAngle = self.actionAngle.truncatingRemainder(dividingBy: 360.0)
self.actionCount = 0
if self.pub.shortTime {
self.actionCount = 50
}
self.actionState = 1
}
} else if self.actionState == 1 {
self.actionAngle += 89.7 + Double(self.actionCount / 10)
self.actionCount += 1
if self.actionCount > 50 {
self.actionAngle += Double.random(in: 0..<360.0)
self.actionAngle = self.actionAngle.truncatingRemainder(dividingBy: 360.0)
self.actionCount = 0
if self.pub.shortTime {
self.actionCount = 150
}
self.actionState = 2
}
} else if self.actionState == 2 {
self.actionAngle += 100.0 - Double(self.actionCount / 2)
self.actionCount += 1
if self.actionCount > 200 {
self.actionAngle = self.actionAngle.truncatingRemainder(dividingBy: 360.0)
self.actionCount = 0
self.actionState = 3
}
} else if self.actionState == 3 {
self.busyFlag = false
return
}
DispatchQueue.global().async {
Thread.sleep(forTimeInterval: 0.02)
DispatchQueue.main.sync {
if self.destroyFlag == false {
self.actionTimeline()
}
}
}
}
}
private func drawRoulette() {
var startAngle: Double = self.actionAngle
let currentAngle: Double = 360.0 / Double(self.itemRateSum) //書こうとする扇形の確度
//判定結果計算
var nowSelectItem: Int = -1
for i in 0..<self.itemRateSum {
let startAngleTmp: Double = startAngle.truncatingRemainder(dividingBy: 360.0)
if ((startAngleTmp <= 270.0) && (startAngleTmp + currentAngle > 270.0)) || ((startAngleTmp >= 270.0) && (startAngleTmp + currentAngle >= 630.0)) {
nowSelectItem = i
break
}
startAngle += currentAngle
}
//判定結果表示 back color
if nowSelectItem != -1 { //念のため
self.colorBg = ConstValue.colorArcs[nowSelectItem % 10]
}
//円グラフ
startAngle = self.actionAngle
for i in 0..<self.itemRateSum {
//circle
self.arcs[i].start = startAngle
self.arcs[i].end = startAngle + currentAngle
//
startAngle += currentAngle
}
//判定結果表示 text
if (nowSelectItem != -1) { //念のため
self.choiceResult = self.arcs[nowSelectItem].name
}
}
private func baseArc(size: CGFloat) -> some View {
return Arc(startAngle: .degrees(-89.5), endAngle: .degrees(269.5))
.fill(Color.white)
.frame(width: size * 0.9, height: size * 0.9, alignment: .center)
.animation(.none)
}
private func fillArc(start: Double, end: Double, color1: Color, color2: Color, size: CGFloat) -> some View {
return ZStack {
Arc(startAngle: .degrees(start), endAngle: .degrees(end))
.fill(color1)
.frame(width: size * 0.85, height: size * 0.85, alignment: .center)
.animation(.none)
Arc(startAngle: .degrees(start), endAngle: .degrees(end))
.fill(color2)
.frame(width: size * 0.5, height: size * 0.5, alignment: .center)
.animation(.none)
}
}
private func arcText(start: Double, end: Double, name: String, size: CGFloat) -> some View {
let textAngle: CGFloat = CGFloat(((start + end) / 2.0)) + 90.0
let textX: CGFloat = CGFloat(sin(textAngle * CGFloat.pi / 180) * (size / 3))
let textY: CGFloat = CGFloat(cos(textAngle * CGFloat.pi / 180) * (size / 3) * -1)
return ZStack {
Text(name)
.offset(x: textX, y: textY)
.font(.footnote)
.animation(.none)
}
}
}
struct Arc: Shape {
var startAngle: Angle
var endAngle: Angle
func path(in rect: CGRect) -> Path {
var path = Path()
path.addLines([CGPoint(x:rect.midX, y:rect.midY)])
path.addArc(center: CGPoint(x: rect.midX, y: rect.midY), radius: rect.width / 2, startAngle: startAngle, endAngle: endAngle, clockwise: false)
//path.addLine(to: CGPoint(x:rect.midX, y:rect.midY))
return path
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView().environmentObject(PublicManager())
}
}
//
// NumberRouletteApp.swift
// NumberRoulette
//
// Created by akira ohmachi on 2021/04/06.
//
import SwiftUI
import UIKit
import GoogleMobileAds
// AppDelegateクラスを定義する
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication,didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
// Mobile Ads SDKを初期化する
GADMobileAds.sharedInstance().start(completionHandler: nil)
return true
}
}
@main
struct NumberRouletteApp: App {
// SwiftUI AppライフサイクルにAppDelegateクラスを注入する
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
ContentView().environmentObject(PublicManager())
}
}
}
//
// PublicManager.swift
// NumberRoulette
//
// Created by akira ohmachi on 2021/04/06.
//
import SwiftUI
import GoogleMobileAds
class PublicManager: ObservableObject {
@Published var isSetting: Bool = false
@AppStorage("numberMin") var numberMin: Int = 0
@AppStorage("numberMax") var numberMax: Int = 25
@AppStorage("numberReverse") var numberReverse: Bool = false
@AppStorage("numberRandom") var numberRandom: Bool = false
@AppStorage("shortTime") var shortTime: Bool = false
var tmpNumberMin: String = "0"
var tmpNumberMax: String = "25"
var tmpNumberReverse: Bool = false
var tmpNumberRandom: Bool = false
var tmpShortTime: Bool = false
//--------------------------------------------------
//adMob
struct AdView: UIViewRepresentable {
func makeUIView(context: Context) -> GADBannerView {
let banner = GADBannerView(adSize: kGADAdSizeBanner)
#if DEBUG
banner.adUnitID = "ca-app-pub-3940256099942544/2934735716"
#else
banner.adUnitID = "ca-app-pub-0000000000000000/0000000000"
#endif
banner.rootViewController = UIApplication.shared.windows.first?.rootViewController
banner.load(GADRequest())
return banner
}
func updateUIView(_ uiView: GADBannerView, context: Context) {
}
}
//--------------------------------------------------
}
//
// SettingView.swift
// NumberRoulette
//
// Created by akira ohmachi on 2021/04/06.
//
import SwiftUI
struct SettingView: View {
@EnvironmentObject var pub: PublicManager
var body: some View {
VStack {
HStack {
Button(action: {
pub.isSetting = false
}) {
HStack {
Image(systemName: "arrow.backward")
Text("cancel")
}
}
Spacer()
Button(action: {
self.pub.numberMin = self.adjustStrToNum(str: self.pub.tmpNumberMin)
self.pub.numberMax = self.adjustStrToNum(str: self.pub.tmpNumberMax)
self.pub.numberReverse = self.pub.tmpNumberReverse
self.pub.numberRandom = self.pub.tmpNumberRandom
self.pub.shortTime = self.pub.tmpShortTime
pub.isSetting = false
}) {
HStack {
Text("apply")
Image(systemName: "checkmark.circle")
}
}
}
.padding(20)
}
GeometryReader { bodyView in
ScrollView {
VStack {
VStack {
self.border()
HStack {
Text("numberMin")
.font(.subheadline)
Spacer()
TextField("", text: Binding(
get: {self.pub.tmpNumberMin},
set: {self.pub.tmpNumberMin = $0.filter{"0123456789".contains($0)}})
)
.textFieldStyle(RoundedBorderTextFieldStyle())
.keyboardType(.numberPad)
.frame(width:bodyView.size.width / 2)
}.padding(.horizontal)
HStack {
Text("numberMin1")
.font(.footnote)
Spacer()
}.padding(.horizontal)
self.border()
HStack {
Text("numberMax")
.font(.subheadline)
Spacer()
TextField("", text: Binding(
get: {self.pub.tmpNumberMax},
set: {self.pub.tmpNumberMax = $0.filter{"0123456789".contains($0)}})
)
.textFieldStyle(RoundedBorderTextFieldStyle())
.keyboardType(.numberPad)
.frame(width:bodyView.size.width / 2)
}.padding(.horizontal)
HStack {
Text("numberMax1")
.font(.footnote)
Spacer()
}.padding(.horizontal)
}
VStack {
self.border()
Toggle(isOn: self.$pub.tmpNumberReverse) {
Text("numberReverse")
.font(.subheadline)
}.padding(.horizontal)
HStack {
Text("numberReverse1")
.font(.footnote)
Spacer()
}.padding(.horizontal)
self.border()
Toggle(isOn: self.$pub.tmpNumberRandom) {
Text("numberRandom")
.font(.subheadline)
}.padding(.horizontal)
HStack {
Text("numberRandom1")
.font(.footnote)
Spacer()
}.padding(.horizontal)
self.border()
Toggle(isOn: self.$pub.tmpShortTime) {
Text("shortTime")
.font(.subheadline)
}.padding(.horizontal)
HStack {
Text("shortTime1")
.font(.footnote)
Spacer()
}.padding(.horizontal)
}
self.border()
VStack {
HStack {
Text("usage")
.font(.subheadline)
Spacer()
}
HStack {
Text("usage1")
.font(.footnote)
Spacer()
}.padding(.vertical,5)
}.padding()
}
}
}
//.navigationBarTitle("Setting",displayMode: .automatic)
//.navigationViewStyle(StackNavigationViewStyle())
.navigationBarHidden(true)
.onTapGesture { //背景タップでキーボードを閉じる
UIApplication.shared.closeKeyboard()
}
}
private func adjustStrToNum(str: String) -> Int {
let num: Int = NumberFormatter().number(from: "0" + str) as! Int
return num
}
private func border() -> some View {
var body: some View {
HStack {
Rectangle().fill(Color.init(red: 0.9, green: 0.9, blue: 0.9)).frame(height: 1)
}
.padding(.horizontal)
.padding(.vertical,10)
}
return body
}
}
extension UIApplication {
func closeKeyboard() { //キーボードを閉じる
sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
}
}
struct SettingView_Previews: PreviewProvider {
static var previews: some View {
Group {
SettingView().environmentObject(PublicManager())
}
}
}
このページのQRコード
便利ウェブサイト
便利 Android アプリ
便利 iOS(iPhone,iPad) アプリ