iOS関連のことを調べてみた

iOS関連のことを調べてみた

【Xcode】シュミレーターを実寸大のサイズに変更する

# はじめに
Kyomeさんのツイートを見てシュミレーターを実寸サイズにする方法を知ったので記事に残しておきます。

https://x.com/kyomesuke/status/1727873051306647716

# やりかた
① 「Window」を選択します。
② 「Physical Size」を選択します。
スクリーンショット 2023-11-24 16 10 42

# おわり
`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 SwiftUI

struct 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/sh

SCHEME=’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 SwiftUI

struct 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 PlaygroundSupport

struct 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 SwiftUI

struct 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 SwiftUI

struct ContentView: View {
var body: some View {
Te

元記事を表示

OTHERカテゴリの最新記事