- 1. 【Xcode】シュミレーターを実寸大のサイズに変更する
- 2. ipaやappをコマンドラインでインストールする
- 3. 【TCA】DependencyClientマクロでボイラープレートを大幅削減
- 4. Expoプロジェクト起動時のnon-std C++ exceptionエラーとその対処法
- 5. iOS開発でよく使うWebサイト
- 6. 【SwiftUI】ScrollView内でframeを指定せず、画面にあったサイズに調整する
- 7. コマンドラインでiOSアプリをビルドしシミュレータで起動する
- 8. 【SwiftUI】ATTが表示されない問題の解決策
- 9. sheetの中でキーボードにフォーカスさせたい時の注意点
- 10. [Swift]enumで変数が定義できる?
- 11. 【ios 17】新機能とアップデートの魅力
- 12. 【Swift】OptionSetという複数の値をまとめて管理できるものがあるらしい
- 13. 【Swift】PlaygroundでPreviewできるらしい
- 14. 【SwiftUI】KeyframeAnimation使ってみた
- 15. 【SwiftUI】プレビューでカスタムテキストスタイルの Dynamic Type に対応する
- 16. KMP + Koin で DI (Dependency Injection)
- 17. 【Swift】配列の全ての要素が条件に一致しているかをチェックする
- 18. Indian Website Company
- 19. AssetsからTextureResourceをLoadできない
- 20. 【SwiftUI】TextにURLを表示させようとすると勝手に青くなるのやめてくれ
【Xcode】シュミレーターを実寸大のサイズに変更する
# はじめに
Kyomeさんのツイートを見てシュミレーターを実寸サイズにする方法を知ったので記事に残しておきます。https://x.com/kyomesuke/status/1727873051306647716
# やりかた
① 「Window」を選択します。
② 「Physical Size」を選択します。
# おわり
`command` + `1`でも同じ事ができます
ipaやappをコマンドラインでインストールする
アプリの再インストールを頻繁に繰り返す必要がある時に以下のようにコマンドラインでインストールすることができます。
“`
ideviceinstaller -i hoge.ipa
ideviceinstaller -i hoge.app
“`
【TCA】DependencyClientマクロでボイラープレートを大幅削減
# はじめに
swift-dependenciesの[v1.1.0](https://github.com/pointfreeco/swift-dependencies/releases/tag/1.1.0)で`DependencyClient`というマクロが導入されました。https://github.com/pointfreeco/swift-dependencies/pull/132
このマクロを使用すると、`”struct of closures”`スタイル[^1]で依存クライアントを実装している場合に記述しているボイラープレートを大幅に削減することができます。
[^1]: TCAやってる人にはお馴染みの、ネットワーク通信等を行うクライアントを構造体で実装する設計パターンを指しています。PRの概要欄にそう書いてあったので引用しました。これが定着すると伝えやすいなあ。
# マクロ導入前のコード
Githubの検索APIをリクエストするクライアントの実装を考えます。インタフェースは例えばこんな感じになるでしょう。
“`swift
import Dependenci
Expoプロジェクト起動時のnon-std C++ exceptionエラーとその対処法
## 事象
`npx expo start` コマンドを使用して Expo プロジェクトを起動し、Xcodeを通じてiOSデバイスでのアプリ動作を確認しようとした際に、以下のエラーが発生しました。
“`
non-std C++ exception
“`## 対処法
以下のコマンドを実行することで、キャッシュをクリアし、問題を解消することができました。このコマンドは、Expoのキャッシュをクリアし、再起動することで、潜在的な問題をリセットします。詳細な原因は調査中です。。:thinking:
“`
npx expo start –clear
“`## 参照
https://github.com/facebook/react-native/issues/35652
https://stackoverflow.com/questions/76375461/how-can-i-solve-a-non-std-c-exception-in-my-react-native-typescript-applicatio
自らの備忘録のために投稿してますが、なにかお役に
iOS開発でよく使うWebサイト
## apple 公式
iOS & iPadOS Release Notes
https://developer.apple.com/documentation/ios-ipados-release-notes日本語ドキュメント
https://developer.apple.com/jp/documentation/iOSのバージョン割合
https://developer.apple.com/support/app-store/## apple 非公式
OSStatus.com
https://www.osstatus.com/Xcode Build Settings
https://xcodebuildsettings.com/## Swift
Swift Package Manager
https://www.swift.org/package-manager/
フレームワークを使用可能になる、podsの代わりにもなる
【SwiftUI】ScrollView内でframeを指定せず、画面にあったサイズに調整する
# はじめに
iOS17で追加された`containerRelativeFrame`を使用すれば実現できます。# 目指すUI
今回の完成系のUIはこちらです。
![simulator_screenshot_1DA64188-71A9-4F99-8A37-AFFD79AD1E89.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/f7304e97-606b-98eb-4ab8-732100c15545.png)# 何が問題か説明
縦に図形を並べようと以下のようなコードを書きます。
“`swift
import SwiftUIstruct ContentView: View {
var body: some View {
ScrollView(.vertical) {
VStack(spacing: 16) {
ForEach(0..<50, id: \.self) { _ in
コマンドラインでiOSアプリをビルドしシミュレータで起動する
# はじめに
本稿は、コマンドラインでiOSアプリをビルドし、シミュレータにインストールおよび起動する方法について書いています。
# シェルスクリプトの作成
以下のbuild.shをプロジェクトのルートディレクトリに配置します。
build.shには `chmod +x build.sh` して実行権限を与えておきます。“`shell:build.sh
#!/bin/shSCHEME=’Your Scheme’
SIM_NAME=’iPhone 15′ # シミュレータ名
DESTINATION=”platform=iOS Simulator,name=$SIM_NAME”
CONFIG=’Debug’ # ‘Debug’ or ‘Release’
DERIVED_DATA_PATH=’./build’
APP_NAME=’Your App Name’
APP_PATH=”$DERIVED_DATA_PATH/Build/Products/$CONFIG-iphonesimulator/$APP_NAME.app”
BUNDLE_ID=’your.bundle.id’
【SwiftUI】ATTが表示されない問題の解決策
# はじめに
「ATTが表示されない」で検索すると同じ問題で記事を書いてる方が割といます。
それらの記事は`DispatchQueue.main.asyncAfter(deadline: .now() + 1.0)`で遅延実行してATTを表示させてました。
1秒遅延させたら表示されないってことはなかなかないと思いますが、個人的には美しくないと思うので、別の解決策を考えました。# 原因
おそらく、`applicationState`が`active`になっている時にATTリクエストしないとアラートが表示されないっぽい?です。`applicationState`の確認方法です。
“`swift
func debugApplicationState(mark: String) {
switch UIApplication.shared.applicationState {
case .active:
print(“\(mark): active”)
case .inactive:
print(“\(mark): inacti
sheetの中でキーボードにフォーカスさせたい時の注意点
# やりたかったこと
ボタンを押すと下から入力フォーム的なのを出す
出すと同時にテキストフィールドにフォーカスし、キーボードを出す# 遭遇した現象
`FocusState`を`onAppear`内で`true`にしたのにフォーカスされない# 原因
ミニマムなViewを作っていろいろ検証した結果、いくつかわかったので共有### フォーカスされないコード
“`swift
struct ContentView: View {
@FocusState private var isFocused: Bool
@State private var showSheet = false
@State private var text = “”var body: some View {
Button {
showSheet = true
} label: {
Text(“Show sheet”)
}
.sheet(isPresente
[Swift]enumで変数が定義できる?
# 目次
[1.enumで変数が使える?](#1-enumで変数が使える?)
[2.実例](#2-実例)
[3.おわりに](#3-おわりに)# 1. enumで変数が使える?
Swiftにおいて何かと便利に使用できるenumですが、実は変数(プロパティ)が定義できるってご存知ですか?
ちなみにenumは個人的にはデータ管理に非常に役立っていると感じます。# 2. 実例
~~~swift: enumプロパティ
enum Month: Int {
case january = 1
case february = 2
case march = 3
}extension Month {
var japanese: String {
switch self {
case .january:
return “睦月”
case .february:
return “如月”
case .march:
return “卯月”
【ios 17】新機能とアップデートの魅力
## 【ios 17】新機能とアップデートの魅力
こんにちは。今回は、ios 17について初心者エンジニアに向けて、新機能とアップデートの魅力についてご紹介します。
## 新デザインとインターフェースの革新
ios 17では、新たなデザインとインターフェースが導入され、使いやすさと視覚的な魅力が大幅に向上しました。これにより、ユーザーはより直感的に操作できるようになり、素晴らしいユーザーエクスペリエンスを体験することができます。
新たなデザインとインターフェースの革新によって、アプリの起動速度や画面遷移のスムーズさも向上しました。これにより、ユーザーはストレスなく素早くアプリを利用することができます。
以下に、新デザインとインターフェースの革新に関するサンプルコードを示します。
“`swift
// タブバーのアイテムの設定
tabbaritem.title = “ホーム”
tabbaritem.image = uiimage(systemname: “house”)
tabbaritem.selectedimage = uiimage(systemname: “hous
【Swift】OptionSetという複数の値をまとめて管理できるものがあるらしい
# はじめに
デフォルトで用意されているコードスニペットを見ていたら使ったことのない機能を見つけたので使ってみました。
![スクリーンショット 2023-11-21 22.35.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/0ee0c7d7-186d-371e-2e98-3b46fc52f5b0.png)# サンプルアプリ
![Simulator Screen Recording – iPhone 15 – 2023-11-21 at 22.34.58.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/0ea152a9-4188-f89a-d4b0-dd8d86c8fe52.gif)# 実装
“`swift
import SwiftUIstruct ContentView: View {
@State private var sectionOptions: Sect
【Swift】PlaygroundでPreviewできるらしい
# はじめに
PlaygroundでViewをPreviewする事ができることを知りました。
![スクリーンショット 2023-11-20 20.22.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/42988a25-a24f-caf0-ce50-897d7591a80c.png)# 実装
“`swift
import SwiftUI
import PlaygroundSupportstruct PlaygroundView: View {
var body: some View {
VStack {
Text(“Hello, World!”)
Text(“Hello, World!”)
Text(“Hello, World!”)
Text(“Hello, World!”)
Text(“Hello, World!”)
【SwiftUI】KeyframeAnimation使ってみた
# はじめに
iOS17から使えるKeyframeAnimationを調べならが使ってみたのでちょっとまとめたのを投稿しておきます。# 最小単位のサンプル
“`swift
import SwiftUI// `KeyFrameAnimationValues`で指定した値を`keyframeAnimator`で使用できる
struct KeyFrameAnimationValues {
var scale = 1.0
}struct ContentView: View {
var body: some View {
VStack {
Image(systemName: “heart.fill”)
.resizable()
.scaledToFit()
.frame(width: 100)
.foregroundStyle(.red)
.keyframeAnimat
【SwiftUI】プレビューでカスタムテキストスタイルの Dynamic Type に対応する
# はじめに
Dynamic Type とはフォントサイズをユーザが調整できるようにする OS の機能です。
アプリ内設定ではなく、設定アプリから端末全体に対して設定するやつですね。
公式が用意している [`Font.TextStyle`](https://developer.apple.com/documentation/swiftui/font/textstyle) を使用することで簡単に対応できます。
ただし、`Font.TextStyle` はフォントサイズがガチガチに決められているためデザイン指示がある場合などは対応しきれないことが多いでしょう。
というわけで、この記事では**カスタムのテキストスタイルの Dynamic Type 対応方法**について紹介します。
# 実装方法2パターン
上記に対応する場合、パターンとしては以下の二つがあります。
1. [`UIFontMetrics`](https://developer.apple.com/documentation/uikit/uifontmetrics) を使用するパターン
2. [`Scaled
KMP + Koin で DI (Dependency Injection)
# はじめに
今の時代、モジュール間は疎結合、ユニットテストはスタブを注入!💉💉💉
というのが定番みたいだし、実際にも開発しやすいので、
[KMP](https://www.jetbrains.com/kotlin-multiplatform/)[^1] でも Dependency Injection(以下DI)していきたいです。KMP は開発言語が Kotlin なわけですが、
Android 向けに [Dagger Hilt](https://developer.android.com/codelabs/android-dagger-to-hilt?hl=ja#0) という DI フレームワークがありつつも、残念ながら KMP 非対応です。じゃあ KMP の場合は何を使えば良いのか?
ということで、自分がいちばん慣れてる [Koin](https://insert-koin.io/) を使ってDIを実現してみます[^2]。
# ライブラリ追加
まず、これがないことには始まりませんので。
[ここ](https://insert-koin.io/docs/refere
【Swift】配列の全ての要素が条件に一致しているかをチェックする
# はじめに
配列の全ての要素が条件に一致しているかをチェックする機能があることを知ったので記事にしておきます。# 実装
“`swift
let array = [“acerola”, “almond”, “apple”, “avocado”]// 配列の全ての要素にaが含まれているかを判定
array.allSatisfy { $0.contains(“a”) } // true// 配列の全ての要素にbが含まれているかを判定
array.allSatisfy { $0.contains(“b”) } // false// 配列の全ての要素にcが含まれているかを判定
array.allSatisfy { $0.contains(“c”) } // false
“`:::note warn
空の配列に対しては常にtrueが返されるので注意が必要です。
“`swift
let array = [String]()
array.allSatisfy { $0.contains(“a”) } // true
“`
:::# おわり
これ結構便利ですね
`al
Indian Website Company
![Indian Website Company Logo 400400.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623788/3614a547-e483-9d9c-4016-adcf997131f0.png)
Indian Website Company is a leading website design company in India based in Indore.
AssetsからTextureResourceをLoadできない
Vision OS用にRealityKitでこんな感じで画像からTexttureを生成しようとしたのですが、画像によっては何故かエラーが発生してしまいました。
画像は、Assetsに入れてあり、大きさも同じなのですが、1はOKでも、2は読めないみたいな事象が起きており、悩んでいたのですが、
“`
guard
let texture1 = try? TextureResource.load(named: “1”),
let texture2 = try? TextureResource.load(named: “2”)
else {
// error
}
“`Assetsからの画像読み込みだと暗くなるという記事を見つけたので、もしやと思い、Bundleから読み込むようにしてみました。すると、
“`
guard
let url1 = Bundle.main.url(forResource: “1”, withExtension: “png”),
let texture1 = try? TextureResource.load(cont
【SwiftUI】TextにURLを表示させようとすると勝手に青くなるのやめてくれ
# はじめに
TextにURLを表示させようとすると勝手に青くなってしまいます。
`foregroundStyle`などを指定してもずっと青いので💢# 問題
`Text`にURLを表示させようとするとURL部分が青くなります。
“`swift
import SwiftUIstruct ContentView: View {
var body: some View {
Text(“https://qiita.com/”)
}
}
“`
![スクリーンショット 2023-11-17 20.00.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/71ecc92a-1638-9b99-bd72-e8503d488981.png)文字+URLだとURL部分だけ青くなります。
“`swift
import SwiftUIstruct ContentView: View {
var body: some View {
Te