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

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

【Xcode】「AST Deserialization Issue」を修正した

# はじめに
実機でビルドしようと思ったら突然大量のエラーが発生しました。

# エラー
![スクリーンショット 2022-08-25 23.34.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/fb02daeb-b2b4-53ff-52f5-78260ce2ffb1.png)

“`
/Users/XXXXXXXXX/Library/Developer/Xcode/DerivedData/XXXXX-cjjyountbftezrcatmquboljpsyt/SourcePackages/checkouts/SDWebImage/SDWebImage/Core/SDWebImageCompat.h:67:10: File ‘/Users/XXXXXXXXX/Library/Developer/Xcode/DerivedData/ModuleCache.noindex/25U36CV5033SC/UIKit-2LM3EQU7VVY4O.pcm’ is not a valid pre

元記事を表示

【Flutter】navigation_bar の比較

## 初めに
Flutter には数多くのパッケージが存在し、どれを採用するか迷ってしまうほどです。
今回は navigation_bar に注目して、通常の BottomNavigationBar に加えて、 navigation_bar のパッケージのうち、特に Likes が多い三つを比較したいと思います。

## 準備
今回は以下の三つのパッケージを使用します。
+ [convex_bottom_bar](https://pub.dev/packages/convex_bottom_bar)
+ [curved_navigation_bar](https://pub.dev/packages/curved_navigation_bar)
+ [bottom_navy_bar](https://pub.dev/packages/bottom_navy_bar)

上記の三つのパッケージのバージョンを「 pubspeck.yaml 」に記述します。
パッケージのバージョンは、特に制約がなければ最新のバージョンで問題ありません。

“`yaml: pubspeck.yaml
de

元記事を表示

SwiftUI: Mapを表示してピンを立てる

自分用の時刻表アプリを作ろう、という記事を書いた時に、乗り場をタップすると、その乗り場の地図を表示できたらいいなと思ったので、調べました。

https://qiita.com/tnar-f/items/1a95429cf5e8547f0b2f

以下、調布駅北口ロータリー周辺の地図を表示し、12番乗り場にピンを立てるコードです。

“`Swift
import SwiftUI
import MapKit

// ピンを定義する構造体
struct identifiableplace: Identifiable {
let id = UUID()
let latitude: Double
let longitude: Double
var coordinate: CLLocationCoordinate2D {
CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
}
}
struct ContentView: View {
// 12番乗り場

元記事を表示

[Swift]ディレクトリ内のファイル・ディレクトリを一覧表示するサンプルコード

## やりたいこと

Swiftのファイル操作系、たまにしか使わなくて忘れてしまうので、備忘のためのサンプルコードを書いておきたいので書きます。
この記事では temporaryDirectory内のファイル・ディレクトリ一覧を表示する処理を記載する。
(サブディレクトリ以下表示なし、隠しファイル表示なし)

## temporaryDirectoryのファイル一覧サンプルコード

“`swift
func printFiles() {
do {
let tempDirContentsUrls = try FileManager.default.contentsOfDirectory(at: FileManager.default.temporaryDirectory, includingPropertiesForKeys: nil, options: [.skipsHiddenFiles, .skipsSubdirectoryDescendants])

tempDirContentsUrls.

元記事を表示

[Swift]ファイル・ディレクトリを削除する

## やりたいこと

ファイルやディレクトリを削除する。
(ディレクトリ削除の場合は、指定ディレクトリ配下を全て削除する。)

以下の2通りの指定方法での手順を記載する。

* path指定 (ただのString)
* URL指定 (URL型)

## ファイルパス指定でのファイルの削除方法

FileManager.default.removeItem(atPath:) を使う。

“`swift
func deleteFileOrDirectory(path: String) {
do {
try FileManager.default.removeItem(atPath: path)
} catch {
print(error.localizedDescription)
}
}
“`

## URL指定でのファイルの削除方法

FileManager.default.removeItem(at:) を使う。

“`swift
func deleteFile

元記事を表示

【Flutter】DatetimePicker の使い方

## 初めに
DatetimePicker とは、以下の画像のようにユーザに年月日を入力してもらうための Widget です。
生年月日の選択などに使用されます。

## 準備
まずは、[DatetimePicker パッケージ](https://pub.dev/packages/flutter_datetime_picker) を「 pubspeck.yaml 」に記述します。
パッケージのバージョンは、特に制約がなければ最新のバージョンで問題ありません。

“`yaml: pubspeck.yaml
dependencies:
flutter:
sdk: flutter

flutter_datetime_picker: ^1.5.1
“`
Pub get をして準備は完了です。

## 実装
まずは

元記事を表示

複数選択を考える

# モチベーション

Electronの勉強のために[TaskTab](https://fiplab.com/apps/task-tab-for-mac)のクローンを作っていたら複数選択で行き詰まった

## 行き詰まった理由

– 一口に複数選択といってもOSやライブラリなどで仕様が異なる
– 直感的でない仕様がある
– 複数選択のライブラリはあるがテーブルと蜜結合していることが多く使い辛い(使いたかったのはリストのため)

# 仕様を考える

> 一口に複数選択といってもOSやライブラリなどで仕様が異なる

全ての仕様を網羅することはできないので、MacのファイルマネージャーであるFinder(≒Google Slide)の仕様を目指します。

Finderの複数選択は[ibash/better-multiselect](https://github.com/ibash/better-multiselect)でほぼ分析されていますが、一部足りない仕様があったため追記しています。

“`diff_markdown:意訳
ルール

アンカー:選択を開始する位置
フォーカス:選択を終了

元記事を表示

SwiftUI: モーダルなSheetを使って別のViewを表示する

自分用の時刻表アプリを作ろう、という記事を書いた時に、乗り場をタップすると、その乗り場の地図を表示できたらいいなと思いました。

https://qiita.com/tnar-f/items/1a95429cf5e8547f0b2f

そういう時のViewの遷移に、モーダルなSheetが使えそうと思ったのでやってみました。モーダルな画面というのは、その画面での操作を終了しない限り、アプリのその他の操作ができない画面のことです。アラート画面のようなものですかね。アイディアとしては以下のようなものです。

![スクリーンショット 2022-08-27 9.32.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517091/2c72c9cb-2c19-9f1b-4e09-6a5a16b7019d.png)

「モーダルなシートってなに?」ボタンをタップすると、

![スクリーンショット 2022-08-27 9.55.16.png](https://qiita-image-store.s3.ap-nor

元記事を表示

【SwiftUI】iOS15からWheelPickerStyleが壊れたから自作した

# はじめに
https://qiita.com/SNQ-2001/items/82711dbb3818450c2c1a

iOS15からPickerのwheelがバグが発生しました。
これはOSのバグで現時点では解決方法はないようです。

UIKitを使ってちゃんと使えるWheelPickerを作成します。

# 実装方法
“`swift:WheelPickerView
import SwiftUI

struct WheelPickerView: UIViewRepresentable {

@Binding var selection: Int
let content: [String]

init(selection: Binding, content: [String]) {
self._selection = selection
self.content = content
}

func makeCoordinator() -> Coordinator {
return

元記事を表示

Swift/iOS開発入門#4_画面遷移その1

# 画面遷移
ここでは画面遷移の方法を学びます。
その中でも**NavigationContorollerr**を使ったノンコードで実装できる最も簡単な画面遷移の方法を学びます。
また、遷移先のテキストを変更する方法もちょっとやります。

## プロジェクトを作成する
いつも通りプロジェクトを作成してください。
名前はTransitionとかでいいと思います。
まずボタンを作成し、大きさを変えてみましょう。
下のようでできていればOKです。
![スクリーンショット 2022-08-26 16.39.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2442087/ad7209ef-34d0-fb00-331c-fb50a82491c1.png)

## NavigationControllerを追加する。
ViewContorollerを選択した状態で、画面左上の**Editor->Embed in->NavigationController**を選択します。
![スクリーンショット 2022-08-

元記事を表示

【Flutter】iOSでキーボードが消えない時の対処法

結論から書くとGestureDetectorの中にキーボードが表示される設定をしているViewを入れてあげればOKです。

ソースはこちら。

GestureDetector(
onTap: () => FocusScope.of(context).unfocus(),
child:  Widget
)

もしTextFormFieldなどの集合体のViewを作成している場合、その集合体のViewに上記を入れましょう。

共通化してるTextFormFieldなどのクラスに上記を入れるとそのView上では機能しますが、それ以外のViewではそれ以外の場所をタップした時にうまく動作しないなどの問題が出る可能性があるからです。

参考までに。

元記事を表示

Appiumを用いたモバイルネイティブアプリVRT(Visual Regression Testing)環境を構築する

これまで、iOSネイティブアプリのE2Eテスト実現のために、Appium+TypeScript環境を構築してきました。
最後に、これまで構築してきた環境にVRT環境を追加します。

webdriverioにのサービスに`wdio-image-comparison-service`という画像回帰テストのサービス(プラグイン的な立ち位置)があります。しかし、こちらのサービスはWebブラウザ向けであり、モバイルネイティブアプリでは動作しません。

そこで、筆者は[wdio-native-app-compare](https://github.com/wswebcreation/wdio-native-app-compare)を導入し、モバイルネイティブアプリ上でのVRT環境を構築しました。

# 前提
これまで構築してきたAppium+TypeScript環境についてはこちらの記事をご参考ください。

https://qiita.com/5enxia/items/3e84b3eaaf54fd8e5f00

# 環境構築

## VRT(Visual Regression Testing)の導

元記事を表示

【Swift】キーボードの開閉を監視する方法

# はじめに
https://qiita.com/SNQ-2001/items/bdcda49db3906ab2422b

こちらの記事を書いている際にキーボードを開閉を検知する方法を知ったので記事にしておきます。

# 方法
**キーボードを開いたことを検知**
“`swift
NotificationCenter.default.addObserver(forName: UIResponder.keyboardWillShowNotification, object: nil, queue: nil) { _ in
print(“キーボードを開きました。”)
}
“`

**キーボードを閉じたことを検知**
“`swift
NotificationCenter.default.addObserver(forName: UIResponder.keyboardWillHideNotification, object: nil, queue: nil) { _ in
print(“キーボードを閉じました。”)
}
“`

# おわり
使うことはあんまりなさそうで

元記事を表示

Swift/iOS開発入門#2_Buttonを使う

# Buttonを使う
Buttonをクリックしたら〜の処理を作ってみます。
今回は、Buttonを用意して、クリックしたらTextを変更させることができるものを作ってみます。

## プロジェクトを作成する
プロジェクトを作成します。
前回と同じ手順で新しいプロジェクトを作成してください。
Stroybord、言語はSwiftを選択してください。projectの名前はButton_practiceとかにしておきます。作り方がわからなかったら#1に戻って確認してみてください。
下のように新しいプロジェクトが開ければOKです。
![スクリーンショット 2022-08-26 2.20.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2442087/ffabc9a6-0b44-b849-5fff-28f78795b00c.png)

## LabelとButtonを配置する。
右上の+ボタンから、 LabelとButtonを配置します。
下のように Label一つ、Button一つそれぞれ一つずつ配置しま

元記事を表示

【Swift】WKWebViewでキーボードを開くとレイアウトエラーが発生する

# はじめに
以前からWKWebViewではキーボード関係でレイアウトエラーが発生していましたが、ログ上のエラーだけで見た目には影響はありませんでした。
しかし、今回キーボード関係で見た目に不具合が起きたので原因と解決方法を紹介します。

# 症状1
キーボードを開いて閉じるとキーボードがあった場所に空白ができる
![Simulator Screen Recording – iPhone 12 – 2022-08-24 at 21.49.39.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/b650ae1e-9d6b-223c-df57-448d33544fc2.gif)

# 症状2
最初からテキストフィールドにフォーカスされる画面だと上に画面が圧縮されている
![Simulator Screen Recording – iPhone 12 – 2022-08-24 at 21.55.23.gif](https://qiita-image-store.s3.ap-northeast-1.

元記事を表示

【個人開発】SwiftUIでiOSアプリを公開!地図上にメモができるアプリのリリース過程

Swiftを学習し始めて約3ヶ月
ついに**自作のiOSアプリをリリース**することができました!

:::note info
自作アプリ:地図上にメモができるアプリ-mapping
:::

今回はSwift初心者がアプリ開発できるまでの過程をまとめていきます。

◇この記事を読んで欲しい人
+ iOSアプリ開発の流れ
+ 個人開発の過程

# Swift学習を始めたきっかけ
◇学習前の状況
+ アプリ開発未経験
+ Webサイト自作経験有り
+ プログラミングは趣味でやってるだけ

私がSwift学習を始めたきっかけは「**iPhoneを使ってるなら自分でアプリ作れたら便利じゃん**」と浅はかなものでした。

Swiftの知識は全くなかったのでとりあえず参考書を一冊購入し学習を始めました。使用した本のレビュー記事も載せておきます。

[SwiftUI学習におすすめの参考書!詳細!SwiftUI iPhoneアプリ開発 入門ノート[2021] iOS 15+Xcode 13対応](https://tech.amefure.com/swift-beginner-book)

# iOS

元記事を表示

Swift/iOS開発入門#1_HelloWorld

# XcodeでSwiftアプリを作ってみる。
iOSアプリを作ることができるXcodeを使ってHello Worldを出力してみます。

# Swift/Xcodeとは
2014年にApple社から発表されたプログラミング言語です。
watchOS,tvOS,iOS,macOSなどの開発ができます。
言語の種類は**静的型付き言語**です。実行前の段階で変数や型の情報を決定するプログラミング言語のことです。
nilの許容性をコントロールしたり、型推論があったりするのが特徴です。まぁこの辺はあまり考えなくて大丈夫です。

## SwiftUIとStorybordについて
Xcodeを用いたiOSアプリ開発には、SwiftUIを用いたものとStorybordを用いたものの2種類が存在します。
それぞれの特徴とメリット、デメリットを少し説明します。

### Storybord
Storybordは、Swiftが生まれてから2019年までに開発で用いられていた手法です。
下のような**ViewController**を用いて直感的にボタンやテキストなどのオブジェクトをドラッグ&ドロップし

元記事を表示

UICollectionViewでドット絵表示(画像から読み込む)

![Xcode-13.1](https://img.shields.io/badge/Xcode-13.1-brightgreen)

## はじめに
下記の記事で `UICollectionView` でドット絵を表示する方法を紹介したのですがやっぱりドット絵配列を作るのがめんどくさすぎるので今回は画像から読み込む方法をご紹介します。
[UICollectionViewでドット絵表示](https://qiita.com/am10/items/490ed3563cd8dae18cb5)

こんな感じで表示します。

ex

## 画像読み込み
画像の読み込み方法はこんな感じです(たまにうまく読み込めない画像もあります)。

“`swift
extension UIImage {

func colorsDa

元記事を表示

【Swift】外観モードを変更の際のアラートを作成した

# はじめに
https://qiita.com/SNQ-2001/items/e907458e506db9fc0418

上記の記事の続きっぽい内容です。

せっかく実装したので使い回しできるように記事にしておきます。

# 完成目標

![Simulator Screen Recording – iPhone 12 – 2022-08-23 at 16.15.00.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/8f9331fb-6da2-901e-4e94-4cefdb47f31a.gif)

![スクリーンショット 2022-08-23 15.41.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/486eaef0-2b31-58f0-c956-596d1d4c6203.png)

画像のように現在選択されているものには、
チェック画像を表示してテキストの色を緑に変更したいです。

元記事を表示

【SwiftUI】iOS15以前でアラートにボタンを3つ以上付ける

# はじめに
iOS15以前のSwiftUIではアラートに3つ以上のボタンをつける事ができません。
解決する方法があったので紹介します。

iOS15以降での方法は[こちら](https://capibara1969.com/3757/)を参考にしました

# 方法
“`swift
Button(action: {
let alert = UIAlertController(title: “title”, message: “message”, preferredStyle: .alert)
let CancelButton = UIAlertAction(title: NSLocalizedString(“キャンセル”, comment: “”), style: .cancel) { _ in }
let ActionButton1 = UIAlertAction(title: “システム設定”, style: .default) { _ in
print(“システム設定”)
}
let ActionButton2 = UIA

元記事を表示

OTHERカテゴリの最新記事