- 1. 【SwiftUI】macOSのアラートに表示されるアプリアイコンの箇所を好きな画像に変更する(macOS13)
- 2. 3万円くらいでiOS開発環境を整える方法(’23/12時点)
- 3. iOS16からのQRコードの読み取り
- 4. 【SwiftUI】カスタムのShapeStyleを作成する
- 5. FlutterでGoogleサインインやってみた!
- 6. iOS/Swiftで小顔加工フィルターをつくる
- 7. iOSアプリの多言語対応:Xcode 15の新機能「String Catalogs」
- 8. 【SwiftUI】Viewをジェスチャーで回転させる(iOS17)
- 9. 【Swift】TableViewとポケモンAPIでリストを作る
- 10. 【SwiftUI】sheetで表示したViewだとKeyboard上のToolbarが機能しない(iOS17.0)
- 11. 【SwiftUI】子ビューでは@StateObjectと@ObservedObjectのどちらを使うべきなのか
- 12. (iOSアプリ開発)Launch Screenの設定でハマったこと
- 13. 【SwiftUI】refreshableのProgressViewをカスタムしたい。。。
- 14. Xcode エミュレータで画面録画する方法
- 15. Kotlin Multiplatform の SKIE について Flows 機能の動作を TCA を使って確認しました
- 16. 【SwiftUI】HomeIndicatorを非アクティブにしてミス操作でホーム画面に行かないようにする(iOS16)
- 17. SwiftUI LazyVGrid利用時にViewのスペースを割り当てる優先順位を変更
- 18. 【SwiftUI】画像をShapeStyleとして使いたい
- 19. IOSの権限ダイアログの文言変更の方法
- 20. “~が…へのアクセスを求めています”の実装方法
【SwiftUI】macOSのアラートに表示されるアプリアイコンの箇所を好きな画像に変更する(macOS13)
# はじめに
macOS13からアラート(ダイアログ)のアイコン部分が変更できるようになりました。# こんな感じ
|通常|今回の実装後|
|-|-|
|![スクリーンショット 2024-01-04 20.23.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/e01a528e-e126-c11e-60d6-a6c1ca4cfcbf.png)|![スクリーンショット 2024-01-04 20.23.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/a564aeb4-dc3b-ea8d-5ee1-c6f446ecf1b8.png)|# 実装
“`diff_swift
import SwiftUIstruct ContentView: View {
@State private var isShowingDialog = falsevar body
3万円くらいでiOS開発環境を整える方法(’23/12時点)
# 結論
16G(以上)のUSBメモリ用意して中古のiMACに最新のmacOSとXCodeを入れる
– USBメモリ ➡ 32Gがamazonで500円くらいで買える
– iMAC ➡ 2014年くらいのだとリコレで30000円くらいで買える# 背景
– iOSで手軽に色々やりたい
– UIに時間かけたくない
– お金もかけたくない# 経緯
## Sonoma
Reactの環境を新しくしようと
[この辺](https://qiita.com/takubii/items/13eb2fff2d8850f55e7d)とか見て
やってみたがなんかXcodeが古いとか言われて動かないmac買い替えだと、、、
ノートPCに60万超えってなんやねんWindowsだって結局古いPCにインストール出来るようになったんだし
Linuxは当然古いPCで動く
macだけ動かないとか無いやろ
と思って調べて見ると、[OCLP](https://dortania.github.io/OpenCore-Legacy-Patcher/)とかいうのがあるらしい手順は[このサイト](https:/
iOS16からのQRコードの読み取り
iOS16以前はAVFoundationを用いてQRコードの読み取りを実装していました。しかし、iOS16からはVisionKitの新機能により、より簡単な方法でQRコードのスキャンが可能になりました。
VisionKitは、機械学習を活用した画像認識技術を提供しており、これにより容易に高品質なデータ認識機能をアプリに組み込むことができます。忘れないように備忘録として実装方法を残しておきます。
# 実装
以下が実装です。 SwiftUIで使用できるようにUIViewControllerRepresentableでラップしています。“`Swift
import VisionKit
import UIKit
import SwiftUIpublic struct QRCodeReader: UIViewControllerRepresentable {
private let onRecognize: (RecognizedItem.Barcode) -> Voidpublic init(onRecognize: @escaping (Recognize
【SwiftUI】カスタムのShapeStyleを作成する
# はじめに
私はデザインのことは分かりませんが、真っ黒や真っ白は目が疲れてしまって文字色には適していないという記事を見たことがありました。
私が見た記事は見つかりませんでしたが、同じようなことを書いてある記事はたくさんあります。https://tomodachitokigyo.com/web/blog-fontcolor-noblack/
しかし、SwiftUIの標準で使用できる`primary`は真っ黒と真っ白です。
使うたびに分岐の処理を書くのは面倒です。
ですので、カスタムの`ShapeStyle`を実装します。# サンプルアプリ
上が標準の`pr
FlutterでGoogleサインインやってみた!
## はじめに
私はiosで開発を進めました。参考になったサイト、動画と私が詰まったところを記載します。## 進め方
以下のルビーDog様の動画を参考に進めました
webで開発するための解説動画となっています。主にサインインするための流れを図とイラストを用いて説明してくださっているのでとてもわかりやすいです。
しかしwebとiosでは少し違って、plistファイルを編集する必要があります。なので、以下のサイトで補いながら進めました。
#### 参考したサイト
1. すごく参考になったサイト(plistファイル書き方)
https://zenn.dev/flutteruniv_dev/articles/710683144ca9cf
2. 公式サイト(Dartドキュメント)
https://pub.dev/packages/google_sign_in_ios## 詰まったところ1
##
iOS/Swiftで小顔加工フィルターをつくる
# 美顔小顔加工アプリを作る
![小顔.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/6acc1374-59e9-0b01-937f-19e9a2c0b476.gif)
インスタにアップロードする時って小顔にしますよね?
小顔フィルターの実装の仕方です。# 顔を検出してゆがませる
顔の領域を中心にゆがませます。
これで、周囲はなるべく自然に、顔だけ徐々に小さくできます。### 顔の検出
“`swift
let request = VNDetectFaceRectanglesRequest()
let handler = VNImageRequestHandler(cgImage: cgImage, options: [:])
try? handler.perform([request])
guard let results = request.results, let firstFace = results.first else { return nil }
let bo
iOSアプリの多言語対応:Xcode 15の新機能「String Catalogs」
#### はじめに
アプリを海外のユーザーにも利用してもらおうと思うと、多言語対応をしないといけません。iOSアプリでは「ローカライズ」と呼ばれるようです。やり方をネット検索すると色々出てきますが、Xcode15以降はとても簡単に対応できるようになったようなので以下に手順を記載しておきます。
#### 手順
1. 対応言語のLocalizationを追加する。Project名を選択し、infoのタブのLocalizationの箇所の「+」をクリックします。言語が選択できるので今回は「Japanese」を選択。
![](https://storage.googleapis.com/zenn-user-upload/3b9105494b81-20240102.png)3. アプリモジュールのGroupで右クリックし、「New File」から「String Catalogs」を選択してファイルを追加。
![](https://storage.googleapis.com/zenn-user-upload/a3200e50b617-20240102.png)4. 名前はLocal
【SwiftUI】Viewをジェスチャーで回転させる(iOS17)
# はじめに
iOS17から`RotateGesture()`という機能が追加されました。
これを使用してジェスチャーでViewを回転させることができます。# サンプルアプリ
![Simulator Screen Recording – iPhone 15 – 2024-01-02 at 21.29.58.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/86c8cd8a-9c13-0275-fbe1-295ffc44fa66.gif)# 実装
公式ドキュメントにあるコードです。
“`swift
import SwiftUIstruct ContentView: View {
@State private var angle = Angle(degrees: 0.0)var rotation: some Gesture {
RotateGesture()
.onChanged { value in
【Swift】TableViewとポケモンAPIでリストを作る
## TableViewとポケモンAPIを使用してアプリを作ります
– 使用するAPIはこちら👇https://pokeapi.co/
## 完成形
![完成系.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917260/6ad1a309-a733-cef5-eed3-8b8778ad63fc.png)## プロジェクト作成
– XCodeで新規プロジェクトを作成します
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917260/478b3d43-6670-7269-3021-ccdd9e2580f7.png)– プロジェクトの名前は、「`pokemon`」とします (なんでもオケ)
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917260/80829fee-ff51-4902-021b-55c941
【SwiftUI】sheetで表示したViewだとKeyboard上のToolbarが機能しない(iOS17.0)
# はじめに
iOS17.0でキーボードの上にボタンを表示しようとしても表示されないという問題があるようです。
過去にも同様のバグがあったようですが、iOS16で1度修正されて、iOS17.0で再発したっぽいです。
iOS17.2では直ってました。https://ja.stackoverflow.com/questions/89652/sheet%E3%81%A7%E8%A1%A8%E7%A4%BA%E3%81%95%E3%81%9B%E3%81%9F%E9%9A%9B%E3%81%AB-%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AEtoolbar%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84
https://developer.apple.com/forums/thread/709227
再現方法を記録しておきます。
# サンプルアプリ
|iOS17.0|iOS17.2|
|-|-|
|![Simulator Screen Recor
【SwiftUI】子ビューでは@StateObjectと@ObservedObjectのどちらを使うべきなのか
こんにちは![むらお](https://twitter.com/ymurao2)です!
SwiftUIで画面分割をした際、親ビューでは`@StateObject`を使用するべきだと思いますが、子ビューではどうなのかが気になったので、今回はむらお調査兵団による調査結果をご紹介します# @.StateObjectと@.ObservedObjectの違いについて
細かい説明は他の方の記事を読んでいただきたいのですが、1番の違いは**ライフサイクル**だと思います。
@.StateObject:Viewが表示されてから非表示になるまで
@.ObservedObject:親ビューのbodyが更新されるたび### 参考
[【SwiftUI】@StateObjectと@ObservedObjectの違いと使い分け](https://qiita.com/0102_0102johnny/items/fba13b2e7cfa61d437e9)# 調査報告
### コード
以下のようなコードで調査しました。
よくある構成だと思います。
ParentViewのbody内が大きくなったので、Chil
(iOSアプリ開発)Launch Screenの設定でハマったこと
#### はじめに
ユーザーがアプリを起動する際に最初に表示される画面、すなわち「Launch Screen」を設定するとアプリが本格的になります。Launch Screenを作成する方法を色々と調べましたが、この記事では一番簡単な方法として`info.plist`ファイルを使用した設定方法を紹介します。#### Launch Screenとは?
Launch Screenは、アプリがロードされる間に表示される静的な画面です。ユーザーにアプリの初期読み込み時間を知らせる役割を果たします。効果的なLaunch Screenは、ユーザー体験を向上させるための重要な要素です。#### `info.plist`でのLaunch Screen設定手順
1. **Xcodeプロジェクトを開く**: Xcodeで対象のiOSアプリプロジェクトを開きます。
2. **Assetsに画像をアップロードする**: 使いたい画像をドラッグ&ドロップで下の図の「logo」の箇所にアップロードします。(画像のタイトルは任意に設定可能です)
![](https://storage.googleapis.c
【SwiftUI】refreshableのProgressViewをカスタムしたい。。。
# はじめに
refreshableをカスタムするためにはScrollViewのスクロール位置を調べたり、RefreshActionをいじったりと、色々面倒なことが多いです。手軽に済ませたい場合はUIKitをいじっちゃうのが手っ取り早いです。
# サンプルアプリ
![Simulator Screen Recording – iPhone 15 – 2023-12-31 at 20.08.52.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/a1401cc8-eda6-8257-d732-34c59ffc8e61.gif)# カスタムローディングの実装
“`swift
import SwiftUIenum CustomProgress: CaseIterable {
case state1
case state2
}extension CustomProgress {
var rotationEffect: Angle {
retu
Xcode エミュレータで画面録画する方法
iOSのエミュレータに画面録画する機能を最近まで知らなかったので、紹介してみようと思います。
![スクリーンショット 2023-12-31 12.58.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/a000418c-dbef-5673-24c2-43bae0072042.png)
こちらエミュレータの上の部分です。
optionキーを押したままにすることで、真ん中のカメラアイコンが録画ボタンに変わりクリックすることで録画することができます。ちょっとした動作の共有などで便利だと思います。
Kotlin Multiplatform の SKIE について Flows 機能の動作を TCA を使って確認しました
# はじめに
Kotlin Multiplatform における iOS 向け API を Swift から使いやすくするツール [SKIE](https://skie.touchlab.co/) (スカイ)を活用しています。これまで[いくつかある機能](https://skie.touchlab.co/features/)のうち、[Sealed Classes](https://skie.touchlab.co/features/sealed) と [Suspend Functions](https://skie.touchlab.co/features/suspend) を紹介してきました。今回は [Flows](https://skie.touchlab.co/features/flows) 機能を iOS のありものの状態管理クラスである [TCA](https://github.com/pointfreeco/swift-composable-architecture) の Reducer に乗せて動作確認する形で紹介しようと思います。
## Sealed Classe
【SwiftUI】HomeIndicatorを非アクティブにしてミス操作でホーム画面に行かないようにする(iOS16)
# はじめに
以前、HomeIndicatorを非表示にするって記事を書きました。https://qiita.com/SNQ-2001/items/077524f3c3a494f15dbb
今回は非表示にする訳ではなく、非アクティブ?(表現が適切かどうかは不明)にして、1度のスワイプでホーム画面に行かないようにします。
# サンプルアプリ
`all`と`bottom`でしかわかりませんが、HomeIndicatorがグレーになっていることがわかります。
![Simulator Screen Recording – iPhone 15 – 2023-12-30 at 22.19.17.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/434bcced-ec8c-de84-d748-fa4268471ca3.gif)# 実装
“`swift
import SwiftUIstruct ContentView: View {
@State private var edgeS
SwiftUI LazyVGrid利用時にViewのスペースを割り当てる優先順位を変更
SwiftUIの[LazyVGrid](https://developer.apple.com/documentation/swiftui/lazyvgrid)は子ビューに指定したViewをグリッド状に並べることができるViewです。
ただし遅延して表示するため、レイアウトを組む場合Viewのスペースを割り当てる優先順位を考慮する必要があります。
どう考慮すべきかを`HStack`の子ビューに`LazyVGrid`を指定する場合で解説します。| | バージョン |
|:———–|:————:|
|Xcode|15.1|
|iOS|17.0|
|macOS|Sonoma 14.0|# 作成物
`HStack`の子ビューに`LazyVGrid`(グリッド状に並べた絵文字)と`Button`を指定し、このようなViewを作成します。
【SwiftUI】画像をShapeStyleとして使いたい# はじめに
図形にforgroundStyleで画像をのせたいことがありました。
できるのかなと調べたところ出来そうだったので記事にしておきます。# 素材
![gradation.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/2fc3a4a2-22db-094d-d55d-89c8b4e7e71c.png)# サンプルアプリ
![simulator_screenshot_1F031802-7025-43D1-9749-33507E7EC232.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/82c18b2d-cbf6-f050-0c25-b2b72c6b8597.png)# 実装
`ImagePaint`を使用してShapeStyle化できるっぽいです。
引数はimageの他にscaleやsourceRectなどがあります。
“`swift
import SwiftUIs
IOSの権限ダイアログの文言変更の方法
初めてIOSアプリを作成してAppストアに申請して超詰まったところ
「権限の許可ダイアログに詳細な説明がありません」
上記の理由で何度も不許可
でも公式のダイアログ使ってるのにな〜?
何かカスタムする方法あるのかな〜?ありました!
しかも簡単!まずXcodeを開きます
自分のプロジェクトをクリックします
そうよく使うplistとかいうやつです
その中の「info」を選択します
追加した権限が必要なprivacyの末尾のvalueに文字を書くだけ!簡単です![スクリーンショット 2023-12-29 16.02.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647748/deca119e-2d9c-c584-c173-98a0068dc3f8.png)
これの赤線で囲ったところですね
こんな簡単にできたのか。。。
“~が…へのアクセスを求めています”の実装方法
## はじめに
アプリの開発において、ユーザーのプライバシーに関連する情報へのアクセス権を取得する必要が生じることがよくあります。この際、具体的な使用目的や利用する情報の詳細をユーザーに明示し、その許可を得る確認画面を表示することが必要です。今回は、この確認画面を実装するためのXcodeの設定手順について解説します。## Xcode設定手順
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2984024/170c5f23-858f-f4de-d896-777cba1e19d5.png)① プロジェクト設定画面からInfoを選択
② +ボタンでプロパティを追加
③ Key(許可を求める機能:例ではカメラ)を選択