iOS関連のことを調べてみた2022年06月15日

iOS関連のことを調べてみた2022年06月15日

SwiftUIでかっちょいいカルーセルを作る

## こういうやつ

![Unknown.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1135021/33de1017-5c17-ce85-24f4-a3fae8a24098.gif)

スワイプで流せます。

## ソースコード

imageとかcolorとかは自分で定義してください。
それ以外はコピペで動くと思います。

“`swift

import SwiftUI

struct Home: View {

@State private var currentIndex = 0
@State private var examples = [“1”, “2”, “3”, “4”, “5”, “6”]
@GestureState private var dragOffset: CGFloat = 0

let itemPadding: CGFloat = 20

var courses = coursesData
@Sta

元記事を表示

複数のApple開発者アカウントを運用していると、実は危険な flutter create の動作

複数の Apple 開発者アカウントを使って開発している環境で `flutter create` を使って新規プロジェクトを作成して、Xcodeで開くと、予期せぬ開発者アカウントに、新規作成したプロジェクトのBundle Identifierが自動登録されてしまうことがあります。

著者が確認したFlutterのバージョン: 2.8.1

# 手順
複数の Apple 開発者アカウントを使って開発している mac 環境で、以下の操作をします。

– flutter create で Flutter プロジェクトを新規作成する
– Xcode でそのプロジェクトを開く

このとき、生成された Xcode プロジェクトのAutomatically Manage Signing設定はオンなので、Apple開発者アカウントにBundle Identifierが自動登録されますが、どのアカウントに登録されるかは、そのときの開発機のKeychainの状態次第となります。

# 原因
`flutter create` が、Keychainに格納されている証明書を自動検索し、Xcodeの`DEVELO

元記事を表示

SwiftUI Fontまとめ

### 1.フォントサイズ指定

“`ruby:swift
—指定方法—
.font(フォントサイズ)

~~~~~~body内~~~~~~
VStack {
Group{
Text(“largeTitle”).font(.largeTitle)
Text(“title”).font(.title)
Text(“title2”).font(.title2)
Text(“title3”).font(.title3)
Text(“headline”).font(.headline)
Text(“subheadline”).font(.subheadline)
Text(“body”).font(.body)
}
Text(“callout”).font(.callout)
Text(“caption”).font(.caption)
Text(“caption2”).font(.caption2)
Text(“footnote”).font(.footnot

元記事を表示

React Native開発中にXcodeのiOSシミュレーター立ち上げに四苦八苦した話

Xcodeのシミュレーターが立ち上がらなくなり、このようなエラー文が出てきました…

1つ目のエラー

` xcrun exited with non-zero code: 60 `

調べた結果、シミュレーターの設定による問題だと仮説を立てて、
以下のURLを参考にシュミレーターの設定をリセットしようとしました
https://github.com/expo/create-react-native-app/issues/67#issuecomment-326389229

ところが…
そもそもシミュレーター自体が立ち上がらん!!!
Unable to boot the Simulatorって出て終わり!!!

この時点で頭が完全ショート…
GUI上では何もエラー文もなく、これ詰んだか…?となりましたが、
試しにApp Storeを見てみるとXcodeのアップデートが来ていたので、
Xcodeを13.3 -> 13.4.1にアップデートしました。
(なんでXcodeのアプデってあんなに時間かかるんでしょうか…)

するとエラー文章が変

元記事を表示

【Swift】LicensePlistの使い方

# インストール
CocoaPodsでインストールします。
“`ruby
pod ‘LicensePlist’
“`

# 準備
メインターゲットのファイルを選択します。
![スクリーンショット 2022-06-14 12.17.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/4309dccc-ddfd-fbe9-0f80-78b84311f601.png)
⌘ + Nで新規ファイル作成画面を表示させます。
検索ボックスに「Setting」と入力して`Settings Bundle`を選択します。
![スクリーンショット 2022-06-14 12.19.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/5520789b-d309-8183-ab0e-9cedfa929d2b.png)
ファイル名は変更せず、`Settings`で「Create」を選択します。
![スクリーンショ

元記事を表示

【SwiftUI】プライバシーポリシーの設置方法

# はじめに
[AppStoreReviewガイドライン](https://developer.apple.com/jp/app-store/review/guidelines/)には様々な条件があり、その中に[プライバシーポリシーを設置を義務付ける項目](https://developer.apple.com/jp/app-store/review/guidelines/#privacy)があります。
今回はSwiftUIでどのようにプライバシーポリシーを設置すれば良いのかを解説します。

# 方法1

“`ContentView.swift
import SwiftUI

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

元記事を表示

TypeScriptを用いたAppiumクライアント実行環境を構築する

Appiumを導入したは良いものの、Python3やJavaScriptのクライアントでは、テストシナリオを記述する際の型の保証や、コード補完に辛さを感じたので、TypeScriptを導入しました。

## 前提
今回使用するiOSのサンプルアプリについてはこちらの記事をご参考ください。

https://qiita.com/5enxia/items/13cafabc8a82a21700bf

また、XCodeやnodejsがインストールされていることを前提としています。
ご了承ください。

## 環境構築
### 1. TypeScriptのインストール
“`sh
npm install -g typescript
“`

### 2. テスト実行用のディレクトリの作成
“`sh
mkdir appium-client-ts
cd appium-client-ts
“`

### 2. webdriverio(WDIO CLI)インストール
“`sh
npm i @wdio/cli
“`

### 3. wdioの設定
“`sh
npx wdio config
“`

元記事を表示

Unity iOS ビルド xcworkspace ファイルがない

# 結論

ターミナルから以下を実行すると xcworkspace ファイルが現れる。

“`
どこでもいいので実行
$ brew install cocoapods

Unity でビルドしたフォルダ内で実行。時間かかるが我慢して待つ
$ pod install
“`

# 経緯

広告を実装しようと、UnityMediationSDK をインストール。その後 xcode のビルドで以下のエラー

`’UnityMediationSdk/UnityMediationSdk.h’ file not found`
![スクリーンショット 2022-06-13 15.20.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36144/1c2336a0-0dd4-a95b-4720-8d6e088de5e3.png)

– Mediation に使うファイルが見つけきれないみたい
– ライブラリは cocoapods で管理するようになっているみたい
– cocoapods を参照するには、 xcwor

元記事を表示

Swift5.7 新機能まとめ

## まえがき
Swift5.7から導入される新機能をいくつか抜粋し、触りの部分のみまとめました。
各機能の詳細については、プロポーザルのリンクをご参照ください。また内容に間違いがある場合や正確性に欠く記載がありましたらコメントいただけると幸いです。

## まずは分かりやすい箇所から…

### [SE-0345](https://github.com/apple/swift-evolution/blob/main/proposals/0345-if-let-shorthand.md) **`if let` shorthand for shadowing an existing optional variable**

**if letのUnwrapがより短くシンプルになりました**

“`swift
let foo: String? = “foo”

if let foo {
print(“foo is unwrapped: \(foo)”)
}
“`

またif文以外にもguard文やwhile文でも同様に可能です。weak selfをguard文でunwrapする時

元記事を表示

Unable to boot simulator

`XCode` > `Windows` > `Device and Simulators`
でシミュレーターの詳細を確認

![スクリーンショット 2022-06-12 8.43.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239663/6df5d51e-b2a8-804d-3171-118d12812d46.png)

`iOS 15.5` となっている。

続いて、XCodeのバージョンの方も `15.5` に合わせるとシミュレーターが起動できるようになる

![スクリーンショット 2022-06-12 8.44.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239663/228e51a8-972e-8d75-2533-ea04a4d54479.png)

元記事を表示

【iOS】アクセシビリティ(VoiceOver)対応チートシート

# 目次
– [はじめに](#はじめに)
– [読み上げテキストの設定](#読み上げテキストの設定)
– [accessibilityTraitsの指定と読み方](#accessibilitytraitsの指定と読み方)
– [意図しない読み方がされた時の対処法](#意図しない読み方がされた時の対処法)
– [フォーカス順序を変えたい](#フォーカス順序を変えたい)
– [ユーザーのアクションをきっかけにフォーカスを変えたい](#ユーザーのアクションをきっかけにフォーカスを変えたい)
– [デバッグ用の便利設定](#デバッグ用の便利設定)
– [さいごに](#さいごに)

# はじめに
iOSアプリでVoiceOver対応を行なったので、その知見をまとめました。(今後も随時更新していきます。)
VoiceOverについての詳細は、[Appleのアクセシビリティに関するページ](https://www.apple.com/jp/accessibility/vision/)をご覧ください。

# 読み上げテキストの設定
VoiceOverの読み上げテキストは以下の方法でシンプルに設定できま

元記事を表示

【SwiftUI】Extra argument in callの対処法

# はじめに
`Extra argument in call`はSwiftUIにはあるあるで、よく発生します。

# 原因
SwiftUIはView要素を9個以上追加できないようになっています。
![スクリーンショット 2022-06-11 15.37.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/4461b888-9e5f-da8e-1d48-1c9171aa986f.png)

# 解決策
Viewを`Group`でグループ化して要素をまとめます。
“`swift
import SwiftUI

struct ContentView: View {
var body: some View {
VStack {
Group {
Text(“Hello, world!”)
Text(“Hello, world!”)
Text(“Hello

元記事を表示

Flutter: XCode error “Unable to boot the Simulator”

## 概要

任意のsimulatorを起動しようとすると次のエラーが出る

“`
Flutter: XCode error “Unable to boot the Simulator”
“`

## 対処法

1. 次のページを開く [このMacについて > ストレージ > 管理 > デベロッパ]
1. 全てのコンテンツを消す

以上です。

## 参考文献

https://stackoverflow.com/questions/72229589/flutter-xcode-error-unable-to-boot-the-simulator

元記事を表示

TCAで親子・孫・ひ孫・玄孫…でstateを同期させる

## まえがき

The Composable Architecture(以下からTCA)で、
親子や孫..のStateの共有をノード間で自動的に同期するためには
どうすればよいか備忘録として書き留めます。

## おおまかに何がやりたいか

孫で更新された情報と、
親で更新された共有データ親に即座に更新される状態を作りたい。
TCAでSingletonを使うようなイメージ。

## 手順

### 共通に持ちたいSharedDataを定義

“` swift
struct SharedData: Equatable {
var isFirstUser: Bool = false
}

“`

共有の情報をSharedDataとして定義し、

“` swift
struct AppState: Equatable {
var sharedData: SharedData
var _homeState: HomeState
}

extension AppState {
var homeState: HomeState {
get {

元記事を表示

【SwiftUI】Buttonのスタイル

# iOS
## automatic
![Simulator Screen Shot – iPhone 12 – 2022-06-10 at 14.07.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/31b86483-ca1a-f20b-419a-670d93c8d919.png)
“`swift
struct ContentView: View {
var body: some View {
List {
Button(action: {
print(“automatic”)
}) {
Text(“テスト”)
}
.buttonStyle(.automatic)
}
}
}
“`
:::note info
セル全体がボタンになっています。
:::

## bordered

元記事を表示

[iOS/SwiftUI] ReSwift + MVVM で副作用を管理する

単一方向のデータフローのアーキテクチャを iOS および Swift で実現する [ReSwift](https://github.com/ReSwift/ReSwift) において、アクションを発行してデータ更新と共にイベントを発火させたい。

あるイベントを発火させるには、通常であれば、呼び出す・表示させるコンポーネントでイベント制御を定義しますが、これは呼び出し箇所やパターンにより複雑になる場合あります。単一のデータフローの仕組みに乗って制御できれば、シンプルに制御できるのでは?。

今回は、アクションを発行して、トースト [ToastUI](https://github.com/quanshousio/ToastUI) を表示する例をまとめました。サンプルコードは [こちら](https://github.com/mitsuharu/FindGitHubRep_Swift/tree/2022-06-10) で参照できます。

![Jun-10-2022 15-06-57.gif](https://qiita-image-store.s3.ap-northeast-1.amazo

元記事を表示

Xcodeのビルド時間を改善するために足掻いてみた話(PodBuilder)

# はじめに

「build待ちです」

エンジニアとしてキャリアをスタートさせてから2ヶ月。一番発している言葉かもしれません。
一日の中でビルドを待つ時間が長すぎるのをなんとかしたいので、足掻いてみようと思いました。

## やりたいこと

クリーンビルドの時間を1秒でも早くしたい

## 環境

M1 MacbookAir 8GB
macOS Big Sur(11.6.2)
Xcode 13.1
Swift 5.5.1
自社サービス「 [sportsbull](URL “https://apps.apple.com/jp/app/%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%84%E3%83%96%E3%83%AB-%E3%82%B9%E3%83%9D%E3%83%96%E3%83%AB/id1086719653”) 」

## 現状を調べる

以下のサイトに処理が遅くなる関数を計測する方法が載っていました。

https://developers.wonderpla.net/entry/2021/10/27/110034

以下のコマンド打つだけで合計時間は

元記事を表示

【APNs】プッシュ通知の証明書を更新する。

iOSアプリでプッシュ通知を飛ばすにはAppleDeveloperにて色々設定をしてp12ファイルやらpemファイルやらを用意しないといけないのですが、1年に1回の作業なんて覚えている訳も無く、折角なので備忘録として残す事にしました。

[キーチェーンからcerファイルの作成(Mac)]
Finder→アプリケーション→ユーティリティ→キーチェーンアクセスでキーチェーンアクセスを立ち上げる。
メニューのキーチェーンアクセス→証明書アシスタント→認証局に証明書を要求を選択
ユーザのメールアドレスにAppleDeveloperで使用しているメアドを入れ、要求の処理をディスクに保存、鍵ペア情報を指定にし、続けるボタンを押す。
後は最後までボタン押していけば良い。
これでcerファイルは完成。

[AppleDeveloperでの更新処理(Web)]
Certificates,Identifiers&Profiles→Identifiers→NAME一覧からpush通知で使っているNAMEのものを選択→pushNotificationsの横にあるEditを選択

Production SSL

元記事を表示

【UIKit】ImageViewerというライブラリを使ってみた

# はじめに

こちらの画像の拡大表示ができるライブラリを使ってみました。

https://github.com/Krisiacik/ImageViewer

# 環境
Xcode 13.3
Swift 5.6

# 内容
このような写真一覧で画像をタップすると拡大表示する実装をライブラリを使ってやっていきたいと思いました。
 

まずは、ライブラリのインストール。
Cocoapodsで最新バージョン`6.0.0`を入れたところバグがあり動き

元記事を表示

【Unity】WebGL + iOSで動画が閲覧できない場合に試してみること

# はじめに
WebGL + iOS環境でのみ動画が閲覧できない問題でハマってしまった際に調べた内容を記録します。

# デバッグ方法
MacやWindowsのブラウザアプリと同様にデベロッパーツールを利用することができます。
尚、デバッグにはMacが必要になります。

https://qiita.com/unsoluble_sugar/items/2a3d06631a6b8259dc44

# 確認項目
### 1. VideoClip
Unity公式によるとVideoClipからのビデオ再生には対応していませんので、URLを指定する方法で動画を再生することになります。

https://docs.unity3d.com/ja/2019.4/Manual/VideoSources-FileCompatibility.html

### 2. CORS(Cross-Origin Resouces Sharing)
動画を配置しているサーバーの設定で他ドメインのサーバーからのメディアのアクセスをブロックする様に設定されている場合は許可する必要があります。
同じドメインに配置する場合は気

元記事を表示

OTHERカテゴリの最新記事