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

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

React Native + Expo でiOSアプリ作成

React Nativeの勉強を兼ねつつ、自分も子どもも大好きな動物園でお題の動物を探してビンゴを目指す **どうぶつビンゴアプリ** を開発中!
ちなみに、iPhoneユーザなのにPCがWindowsのため、四苦八苦しながらiOSアプリを開発してました…。(そろそろMac買おうかな)

この記事では、アプリの作成過程や得た学び、躓いたことを書いていきます。
定期的に内容追加していく予定です!

# 目次
**[0. React Native & Expo とは?](https://qiita.com/drafts#0-react-native–expo-%E3%81%A8%E3%81%AF)**
**[1. 環境準備](https://qiita.com/drafts#1-%E7%92%B0%E5%A2%83%E6%BA%96%E5%82%99)**
**[2. React Native アプリのソースに触れる](https://qiita.com/drafts#2-react-native-%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E3%82%B

元記事を表示

iOSのシミュレータ不具合

再ダウンロードは時間かかるだけで意味ない

“`shell
for a in `ps -ef | grep -i xcode.app | awk ‘{print $2}’`
do
sudo kill -9 $a
done

rm -rf ~/Library/Caches/*
rm -rf ~/Library/Developers/CoreSimulator/Devices/*
for a in `ps -ef | grep -i coresimu | awk ‘{print $2}’`
do
sudo kill -9 $a
done
“`

その後デバイス削除➡再作成

元記事を表示

SwiftUIのTextFieldの高さを調整する方法: フォントサイズによるアプローチ

SwiftUIでユーザーインターフェースを設計する際、`TextField` の視覚的な高さを調整することが時には必要になります。しかし、`TextField` の高さを直接調整することはできません。この記事では、`TextField` の高さを変更する一つの効果的な方法として、フォントサイズを利用するアプローチについて解説します。

### `TextField` の高さの問題

SwiftUIの`TextField`は、デフォルトでその内容に合わせてサイズが決定されます。多くの場合、これは便利ですが、時には特定のデザインニーズに合わせて、より高い`TextField`を必要とすることがあります。しかし、`.frame(height:)` メソッドを用いても、`TextField` の高さは変更されません。これは、`TextField` が内部的にコンテンツ(特にテキスト)のサイズに基づいて高さを自動調整するためです。

### フォントサイズを使用した解決策

`TextField`の高さを効果的に調整する方法の一つは、フォントサイズを変更することです。`TextField`内のテ

元記事を表示

Flutter の iOS をターゲットにしたビルドで Xcode で起きていたエラーと対策

Flutter の iOS をターゲットにしたビルドで Xcode に関係するエラーが起きていて理由も対策もわからなかった。

Failed to build iOS app
Error (Xcode): Sandbox: rsync.samba(87976) deny(1) file-write-create /Users/…/…/…/…/build/ios/Release-iphoneos/Flutter.framework

Error (Xcode): Sandbox: dart(87954) deny(1) file-write-create /Users/…/…/…/…/build/ios/Release-iphoneos/.last_build_id

Error (Xcode): Flutter failed to write to a file at “/Users/…/…/…/…/build/ios/Release-iphoneos/.last_build_id”.

以上のような感じ。それこそ chtGPT にきいて

元記事を表示

【SwiftUI】折れ線グラフのデータ補完を設定する

# はじめに
折れ線グラフのデータ補完と言われてもわかりにくいと思うので、軽く説明します。

折れ線グラフって値のある箇所を線で繋いでいるので、実際には線のある箇所にはデータがない状態です。

![スクリーンショット 2024-01-15 21.23.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/2c3151e3-9822-748d-dd42-6a096fae3f40.png)

その補完をどのように表示するのかを設定することができます。

# サンプルアプリ
![Simulator Screen Recording – iPhone 15 – 2024-01-15 at 21.20.42.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/0253958c-e502-451d-6162-1274337bb3a6.gif)

# サンプルアプリの全体実装
“`diff_swift
imp

元記事を表示

iOS in-app reviewのテストについて

## 起きたこと
– TestFlightでテストしようとしたが全然reviewダイアログ表示されません
– 審査後promotion codeを発行して公開前に機能テストをしようとしたがダイアログ表示されたものの実際投稿押すとエラーが起きる。

## 調査
[requestreviewの公式ドキュメント](https://developer.apple.com/documentation/storekit/skstorereviewcontroller/3566727-requestreview)
“`
When your app calls this method while it’s in development mode, StoreKit always
displays the rating and review request view, so you can test the user interface
and experience. However, this method has no effect in apps that you dis

元記事を表示

LazyVStackの孫ViewのStateが画面外でリセットされる

# SwiftUIのLazyVStackの孫ViewのStateが画面外でリセットされる
とても長いタイトルですが、タイトルままです
他の方が報告されている、こちらのOpen Radarと同じ問題です

https://openradar.appspot.com/FB9900814

iOS 17.2.1、Xcode 15で確認してます

# 起きている現象
例えば下記のようにLazyVStackの子ViewとしてChildView、ChildViewの子ViewとしてSubViewを配置します
(つまりLazyVStackから見たら、SubViewは孫View)
この時、SubViewの持つ@State及び@StateObjectが、そのSubViewが画面外に行った際にリセットされてしまいます
ChildViewの方は値が保持されているので、おそらく不具合かなと考えています

FlutterでiOS Web Pushを実装する

# FlutterでiOS Web Pushを実装する
今回は、FlutterでiOS Web Pushを受け取れる簡単なWebアプリを実装する方法を紹介したいと思います。(記事作成に生成系AIを一部使用してます)

## Web Pushについて
Web Pushとは、Webアプリケーションからユーザーに通知を送る仕組みのことです。Web Pushを使えば、ユーザーがWebアプリケーションを開いていなくても、ブラウザやOSの通知センターにメッセージを表示することができます。

Web Pushは、Service Workerというバックグラウンドで動作するスクリプトと、Push APIというブラウザが提供するAPIを使って実現されます。Service Workerは、Webアプリケーションがインストールされた時に登録され、Push APIは、ユーザーが通知の許可を与えた時に呼び出されます。Push APIは、Webアプリケーションに一意に紐づくPush Subscriptionというオブジェクトを生成し、その中に含まれるendpointというURLをサーバー側に送ります。サーバー側は

元記事を表示

【SwiftUI】Chartの棒グラフでグラデーションを設定した際にグラデーションの終点を揃える

# はじめに
SWiftUIのChartを極めようの会を1人でしてます。

# 解決したい課題
棒グラフにグラデーションを設定します。
“`swift
import SwiftUI
import Charts

struct Temperature {
let day: Int
let max: Double
let min: Double
}

struct ContentView: View {
@State private var temperatures: [Temperature] = [
.init(day: 1, max: 17, min: 13),
.init(day: 2, max: 25, min: 10),
.init(day: 3, max: 12, min: 11),
.init(day: 4, max: 21, min: 11),
.init(day: 5, max: 10, min: 6)
]

var body: so

元記事を表示

Expoでeas buildのad-hocのprovisioning profileに新しい端末を追加できない時

# 前提
– Expoのmanaged workflow
– expo-dev-clientを利用している
– eas buildを利用している
– iOSむけにad-hocビルドを配信したい

# 問題
– 新しいiOS端末を検証端末として登録したかった
– そのために`eas device:create`をして、新しい端末のUUIDを登録した
– その後`eas build –profile development –platform ios`でad-hocのビルド実行した(–profile developmentのdevelopmentのところは各自のeas.jsonの設定によって異なります)
– eas cliから`The provisioning profile is missing the following devices`と尋ねられるので、さっき`eas device:create`で登録した端末を選択して続行
– `Failed to provision 1 of the selected devices:0000xxxx-000359960C21xxxx (

元記事を表示

SwiftUIでの画面遷移問題: NavigationViewからNavigationStackへの移行

SwiftUIを使用する際に直面した、NavigationViewを用いた画面遷移の問題について共有したいと思います。この問題は、遷移前の画面でCore Dataをfetchする際に生じました。具体的には、遷移前の画面でCore Dataを取得し、遷移先の画面でそのデータを更新すると、遷移前の画面が再レンダリングされてしまいました。その結果、NavigationViewのdestinationが解除され、自動的に遷移前の画面に戻ってしまうという状況が発生しました。

この問題には、SwiftUIのNavigationStackの使用が効果的な解決策でした。最近、NavigationViewは非推奨とされ、NavigationStackが推奨されています。NavigationStackに移行したところ、上記の問題が解消されました。NavigationStackは、より直感的で使いやすいAPIを提供し、画面遷移におけるこのような問題を解決するのに役立ちます。

この記事は、同じ問題に直面している他の開発者の参考になることを願っています。SwiftUIの動作に関しては、時に直感に反することが

元記事を表示

【SwiftUI】Chartをスクロール可能に変更する

# はじめに
チャートをスクロール可能にする機能の紹介します。

# サンプルアプリ
![Simulator Screen Recording – iPhone 15 – 2024-01-13 at 19.07.56.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/dee5a330-63c9-71eb-d8d5-4c4a959926d9.gif)

# 実装
“`swift
import SwiftUI
import Charts

struct Temperature {
let day: Int
let max: Double
let min: Double
}

struct ContentView: View {
@State private var temperatures: [Temperature] = [
.init(day: 1, max: 23, min: 13),
.init(day: 2, max:

元記事を表示

Core ML索引

### Core MLに関する記事のリンク集です
60記事ぐらい。MLBoy まじまだいすけが書いた記事です。
新しい記事が上にきます。
(Core MLはiOS/macOSで使えるAIフレームワークです)

**目次**

[**CoreMLについて**](#coremlについて)

[**モデル変換例/使用例**](#モデル変換例使用例)

[**テクニック**](#テクニック)

# CoreMLについて

https://qiita.com/john-rocky/items/f15ac3885e42b52c579b

https://qiita.com/john-rocky/items/caa55453f40f5f444edf

https://qiita.

元記事を表示

Metalシェーダー入門:50行で三角形を描画してみよう

## Metalシェーダー開発

– とにかく綺麗なグラフィックを描画してみたい!
– 数百万単位の大量のパーティクルを描画したい!
– 3Dを描画してみたい!
– オリジナルの画像処理プログラムを書きたい!
– 機械学習モデルをGPUを使って自前で実装してみたい!
– 物理シミュレーションを実装してみたい!

そんな方はぜひMetalでシェーダーを書いてみましょう!
ただ、今回の記事は入門編ということでめちゃめちゃ簡単なところからやっていきます。

## 今回つくるもの

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567236/7798ea43-5323-6754-9e56-d2a0c738093c.png)

シェーダーの基礎、三角形を描画していきます。

macOSアプリとして実装していくので、Swiftでのアプリ開発経験があるとこの記事は読みやすいと思います。
コードはiOSの実機でも動きます。(シミュレーターでは動きません)
ちなみに完成コードはたったの50行!

## 準

元記事を表示

NotionSwiftを使ってアプリ作ってみた話

「[NotionAPI](https://developers.notion.com/)でアプリ作ってみたい」と思い立って、公式より簡単に作れないかなーと方法を探していたところ、良い感じのライブラリを見つけました。

https://github.com/chojnac/NotionSwift

使ってみよう

READMEを読んだ感じ、使いやすそうだ

# 作ったアプリ
Notionで作成した習慣トラッカーの入力を簡単にするアプリを作りました。(よかったら使っていただけると嬉しいです!)

https://apps.apple.com/us/app/nabit/id6466298791

ライブラリを使用した箇所は以下になります。
– NotionDB作成
– 既存のNotionDBとの連携
– NotionDBにページを追加
– 特定のページのプロパティを更新

# 実装
## Wrapperクラスの作成
`NotionClient`のインスタンスとAPI処理を持つclass。

`NotionClient`のインスタンスを生成するには`integrationToken`と`dat

元記事を表示

【SwiftUI】ChartのX軸Y軸の目盛りを編集する

# はじめに
Chartの折れ線グラフの目盛りに関して調べたので記事にしておきます。

# デフォルト実装
本記事で使用する実装です。
この実装をベースに機能を追加していきます。
“`swift
import SwiftUI
import Charts

struct Temperature {
let day: Int
let max: Double
let min: Double
}

struct ContentView: View {
@State private var temperatures: [Temperature] = [
.init(day: 1, max: 23, min: 13),
.init(day: 2, max: 25, min: 10),
.init(day: 3, max: 23, min: 11),
.init(day: 4, max: 21, min: 11),
.init(day: 5, max: 18, min: 12),

元記事を表示

チーム開発を上手くすすめるために

## 概要

この記事では、チーム開発を上手くすすめるために必要なことを筆者の体験をベースに重要だと考える要素についてまとめています。

## 前提

筆者は iOS 開発者として働いていますが、仕事とは別で個人的にアプリ開発したり、チーム開発をしたりしています。その中で、仕事でない時のチーム開発を上手くすすめるために必要なことをまとめています。筆者はハッカソンへの出場や趣味での iOS アプリ開発で何回かチーム開発をしてきましたが、その中で上手くいかなかったことの原因を思い返すと、モチベーションの低下などほとんどが似たような要素に起因していると考えていますのでその対処法についてこの記事でまとめていきたいと思います。

## メンバー集め

まずは、チーム開発をするためにはメンバーが必要です。メンバーを集める際には、以下のような観点を考えると良いと思います。

1, メンバーの技術力・スキル
仲良しで集まって自由に開発するのも楽しくて良い部分も多くあるかと思います。ただ、リリースを目的にしたり、比較的難易度の高いものを開発目的にする場合は、自分にないスキルを持ったメンバーを集めた

元記事を表示

【SwiftUI】折れ線グラフを2つ表示する

# はじめに
SwiftUIのChartsで折れ線グラフを2つ表示させようとした時に苦戦したので記録しておきます。

# サンプルアプリ
![simulator_screenshot_DB3BA4F1-34EA-42AD-AAA1-773BD7E486DC.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/25b897a7-8c8c-4672-ddc9-ad68fcad73e6.png)

# ダメな例
以下のように`LineMark`に`foregroundStyle`をつけることで色を変えることができます。
“`swift
Chart {
ForEach(temperatures, id: \.day) { temperature in
LineMark(
x: .value(“day”, temperature.day),
y: .value(“max”, temperature.max)
)

元記事を表示

[Swift] APIを使用して郵便番号から住所を自動入力する(Storyboard版)

## はじめに
会員制のアプリケーションを開発する際、ユーザーに住所の入力を求めたい場合がありますよね。
ただ住所を都道府県から手入力しようとすると、文字数が非常に長いため、ユーザーにとっては手間となってしまいます。(ユーザーの離脱につながるリスクもある)
そこで多くのアプリケーションに導入されているのが、郵便番号からの住所自動入力です。
この技術をSwiftではどのように導入しているのか気になったため調査・実装してみました。
色々方法はあるようですが、今回はAPIを使用した方法で実装しています。

※本記事はStoryboardで実装しています。SwiftUI版は別途記事を作成します。

## 使用するAPI
以下のAPIを使用します。

https://zipaddress.net/

https://zipaddress.net/ こちらのURLの末尾に`?zipcode={郵便番号}`を追加すると、郵便番号に応じた住所を返してくれます。
例) https://api.zipaddress.net/?zipcode=1000001

## Storyboadに配置するパーツ

元記事を表示

iPhoneで人物を異なる背景に貼り付ける

# 動画合成/画像合成でさまざまなイメージを作れる

![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/d7eef89a-c460-f39e-5393-07746238d30b.jpeg)
![matte.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/430608a9-522e-1f47-3ecd-8710fceb3129.jpeg)
![スクリーンショット 2024-01-11 6.24.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/9d3472b2-0696-ee0a-9326-fb2d84d5ed23.png)

iPhoneやiPadのアプリで高速に実行できるので、

**・旅行イメージの提案
・広告画像の作成
・商品使用イメージ
・動画のクロマキー合成**

などに使える。

元記事を表示

OTHERカテゴリの最新記事