- 投稿日:2021-08-09T19:24:07+09:00
コピペで乗り切るエンジニアがSwiftUIを勉強してみた(ファイル構成について)
さて、前回SwiftUIの実行環境を用意しました。 SwiftUIのファイル構成と軽くソースの解析を 「Hello world」を使って確認していきます。 (前回:コピペで乗り切るエンジニアがSwiftUIを勉強してみた(環境構築編)) ファイル構成について プロジェクトをつくった際にデフォルトでたくさんファイル作成される。 TestHelloWorld TestHelloWorldApp.swift 作成するアプリケーションのエントリポイント。 @mainと記述された箇所が該当。 ContentView.swift 作成するアプリケーションのビューの役割。 画面に表示するボタンや文字を配置する。 Assets.xcassets アプリで使用する画像を格納するフォルダ。 表示したいファイルはここに追加する。 info.plist アプリ内の共通設定。 アイコンやバージョンの設定や権限まわりの設定を設定する。 Preview Content Preview Assets.xcassets TestHelloWorldTests XCTestフレームワークを使ったユニットテストを実装するためのもの。 使い方はまだ分からないので一旦スルーで。 TestHelloWorldTests.swift Info.plist TestHelloWorldUITests XCTestフレームワークを使ったUIテストを記載します。 こちらも使い方はまだ分からないのでスルーで。 TestHelloWorldUITests.swift Info.plist Products 各種ビルド後のアプリケーション本体。 TestHelloWorld.app TestHelloWorldTests.xctest TestHelloWorldUITests.xctest 実行までの流れ 初期起動(エントリーポイント) さて、上記のフォルダ構成で記載した通り、 SwiftUIでは初期起動(エントリーポイント)は 「@main」で指定されるとのこと。 なので、「このプログラムはどこから始まるのかな?」となったら まずは「@main」を探すと良いかと思います。 import SwiftUI @main struct TestMusicLibraryForSwiftUIApp: App { var body: some Scene { WindowGroup { ContentView() } } } エントリポイントであるTestMusicLibraryForSwiftUIApp から呼び出された ContentView も上記フォルダ構成で記載した通り、 画面レイアウトを記述していきます。 下記に記載の通り、Text("Hello, world!").padding() で画面上に「Hello, world!」という文言を表示させます。 また、ContentView_Previews側はプレビュー表示の際に使用されます。 import SwiftUI struct ContentView: View { var body: some View { Text("Hello, world!") .padding() } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } } 以上!ひとまずこのくらいで!
- 投稿日:2021-08-09T17:45:58+09:00
【Slack】iOSホームからアイコン押すだけで、退勤・休憩を打刻できるようにした
新しい会社に入社しました ありがとう! ありがとう! でも完全週休3日だったので、扱いがフリーランスになり、既存の打刻システムが使えないとのこと! グワーーーーッ!!! なので自分で、iOSのショートカットで実装しました! Slackで業務の打刻をしている非正社員のみなさんも、つかってみてください>< 結 次をインストールし ライブラリ https://www.icloud.com/shortcuts/f2f41d62af1d46cebc1c9bf0361bf51c https://www.icloud.com/shortcuts/a17314510004488bb3293ad5cd5b8369 https://www.icloud.com/shortcuts/a2077107129b4b02ad86645fd2df4fd2 アクション https://www.icloud.com/shortcuts/b6dad99bd200459e8becdca2d19a12b4 https://www.icloud.com/shortcuts/dd0ddbc992c041ea806f82eff9c65857 https://www.icloud.com/shortcuts/85a59c75e0ec4e69940b2ca29a144e68 https://www.icloud.com/shortcuts/79d0592fd3b44091b1cde7ade86457df 「設定&インストール」の各項を実行し、「アクション」の各類を使ってください >< 設定&インストール ここ開く: Slack API | Slack 諸注意 ~iOSショートカットを書くのがめんどすぎて、~エラーハンドリングしていません ちゅういしてね! MITライセンスで配布してるので、改良してくれてもいいのよ>< 感想 ~iOSショートカットを書くのがめんどすぎた~ たのしかった!
- 投稿日:2021-08-09T17:45:58+09:00
【すぐにインストールできるよ!】iOSホームからアイコン押すだけで、退勤・休憩を打刻できるようにした【Slackに打刻】
新しい会社に入社しました ありがとう! ありがとう! でも完全週休3日だったので、扱いがフリーランスになり、既存の打刻システムが使えないとのこと! グワーーーーッ!!! なので自分で、iOSのショートカットで実装しました! Slackで業務の打刻をしている非正社員のみなさんも、つかってみてください>< 結 まずこれ 次のものをインストールし ライブラリ https://www.icloud.com/shortcuts/f2f41d62af1d46cebc1c9bf0361bf51c https://www.icloud.com/shortcuts/a17314510004488bb3293ad5cd5b8369 https://www.icloud.com/shortcuts/a2077107129b4b02ad86645fd2df4fd2 アクション https://www.icloud.com/shortcuts/b6dad99bd200459e8becdca2d19a12b4 https://www.icloud.com/shortcuts/dd0ddbc992c041ea806f82eff9c65857 https://www.icloud.com/shortcuts/85a59c75e0ec4e69940b2ca29a144e68 https://www.icloud.com/shortcuts/79d0592fd3b44091b1cde7ade86457df 「設定&インストール」の各項を実行し、「アクション」の各類を使ってください >< 設定&インストール ここ開く: Slack API | Slack 諸注意 ~iOSショートカットを書くのがめんどすぎて、~エラーハンドリングしていません ちゅういしてね! MITライセンスで配布してるので、改良してくれてもいいのよ>< 感想 ~iOSショートカットを書くのがめんどすぎた~ たのしかった!
- 投稿日:2021-08-09T14:50:00+09:00
いらすとやガチャアプリを作成(swift)
概要 今や日常まで浸食しているシュールな絵で人気のいらすとや。 これらを集めてガチャアプリにしました。 構成 ①ガチャ景品素材を作成 ②Array[UIImage]を作成 ③ガチャ演出アニメーションを作成 ④SwiftGifを使用してgifの表示を可能にする ⑤アニメーションメソッドを作成 ⑥ガチャ景品排出メソッドを作成 ⑦メソッドを組み合わせて「ガチャを引く」ボタンを作成 ①ガチャ景品素材を作成 いらすとやから独断と偏見で面白いと思った画像を70個選定しました。 これらをkeynoteでいい感じにソシャゲっぽっくします。 SSR・SR・R・Nを用意しました。 ②Arrayを作成 ガチャ景品素材を格納する配列を作成します。 ViewController.swift var gachaImageArray: [UIImage] = [ UIImage(named: "chunigirl")!, //70個分記入 ] ③ガチャ演出アニメーションを作成 keynoteでgifを作成しました。 ・カプセルがドロップするアニメーション ・カプセルが開くアニメーション ④SwiftGifを使用してgifの表示を可能にする swiftではそのままではgif画像を扱うことができません。 SwiftGifというライブラリをcocoapodsでインストールして使用させていただきました。 https://github.com/swiftgif/SwiftGif ViewController.swift import SwiftGifOrigin ⑥アニメーションメソッドを作成 ViewController.swift func gachaAnimation (){ //隠しておいたカプセルのUIImageViewを表示する self.capcelImageView.isHidden = false //swiftGifライブラリをインポートすることにより、.loadGif(name:引数)が使用可能に //1つ目のアニメーションを表示 capcelImageView.loadGif(name: "capcelgif") //2つ目のアニメーションを表示 //一つ目が終わった後に表示させるために遅延処理する DispatchQueue.main.asyncAfter(deadline: .now() + 3.75) { self.capcelImageView.loadGif(name: "capcelgif2") } } ⑤ガチャ景品排出メソッドを作成 ViewController.swift //ガチャの結果を表示する機能 func gachaResult(){ //結果の表示 アニメーションの後に表示するため遅延処理 DispatchQueue.main.asyncAfter(deadline: .now() + 5.25) { //配列からランダムに画像を取り出し、取り出した画像をUIImageViewにセット self.gachaImageView.image = self.gachaImageArray.randomElement() //結果を表示 カプセルのアニメーションを非表示 self.gachaImageView.isHidden = false self.capcelImageView.isHidden = true //ボタンを再度表示させる。 self.lottery1Button.isHidden = false //2回目以降はボタンの文字を変える self.lottery1Button.setTitle("もう一度引く", for: .normal) } 排出確率は一定です。1/70の確率で何かが出ます。 ⑦メソッドを組み合わせて「ガチャを引く」ボタンを作成 ViewController.swift //ガチャを引くボタン @IBAction func lottery1Button(_ sender: Any) { //初期化(タイトル以外のbuttonとimageを一旦消す) lottery1Button.isHidden = true gachaImageView.isHidden = true capcelImageView.isHidden = true gachaStartImageView.isHidden = true //ガチャ機能 gachaAnimation() gachaResult() //Timeline(dispatch que) //after 0 second : gacha drop(capcelgif animation) animationtime is 3.75 //after 3.75 seconds :gacha open(capcelgif2 animarion) animationtime is 2.0 //after 5.25 seconds : gacha open animation is hidden //after 5.25 seconds : result display //引いた回数をプラス1する counter += counter } ボタンを押すと、アニメーション後に下記の様に表示 今後の課題 ・確率操作(SSRの景品の排出確率を0.1%にするなど)ができない。 ・引いた景品を記録して、コレクション表示させたい ・引けるのは1日10回まで、それ以降は課金などの機能