iOS関連のことを調べてみた2021年02月23日

iOS関連のことを調べてみた2021年02月23日
目次

Swiftにおける配列操作まとめ

#目次
[はじめに](#はじめに)
[部分置換](#部分置換)
[部分配列の型](#部分配列の型)
[配列のプロパティ](#配列のプロパティ)
[配列のメソッド](#配列のメソッド)
[シークエンス操作](#シークエンス操作)
[最後に](#最後に)

#はじめに
配列操作のまとめです。主に、部分配列、配列のプロパティ、メソッドについてまとめています。
SequenceとCollectionや基本的な配列のアクセス方法、その他配列以外の知識が必要なものは今回は説明していません。

#部分置換
“`swift
var a = [“赤”, “青”, “緑”, “白”, “黒”]
//①
a[1…1] = [“橙”, “茶”, “紫”]
print(a) // [“赤”, “橙”, “茶”, “紫”, “緑”, “白”, “黒”]
//②
a[2…3] = [“黄”]
print(a) // [“赤”, “橙”, “黄”, “緑”, “白”, “黒”]
//③
a[1…2] = []
print(a) // [“赤”, “緑”, “白”, “黒”]
//④
a[2…] =

元記事を表示

【SwiftUI】TabViewの基本的な使い方

先日、私にとって初のiOSアプリがリリースとなりましたので、開発に使った技術を細分化してアウトプットしていこうかなと思います。良かったらインストールしてみてください。

[わかりすと -勉強サポートアプリ-](https://apps.apple.com/jp/app/id1553876980)

# TabViewとは

複数の子ビューを切り替えることのできるビュー。

[公式リファレンス](https://developer.apple.com/documentation/swiftui/tabview)

# 実際の動作

# コード

上の動

元記事を表示

【iOS】いつの間にかサポート外OSの端末で新規インストールできなくなった

# 概要
iOSアプリ開発で悩ましい、サポートiOSの終了において、過去と挙動が変わっていたためまとめました。
サポートを切る=IPHONEOS_DEPLOYMENT_TARGETでOSバージョンを変更する、の前提です。

# 想定と事象
想定

| OS | 新規インストール |
|—|—|
| 対象外 | 対応しているうちの最新バージョンが落ちる |
| 対象内| 最新バージョンが落ちる |

事象

| OS | 新規インストール |
|—|—|
| 対象外 | AppSotoreでアプリ名を検索:ヒットしない
サイトからAppStoreに誘導:「iOSXX.X以降が必要です。iPhone,iPad,およびiPod touchに対応。」という文言が表示されており、ダウンロードボタンは非活性|
| 対象内| 最新バージョンが落ちる |

# 過去(2013~)はできてた
> 今日(米国時間9/17)、あるRedditユーザーが、App StoreでiOSの旧バージョンを使っているユーザーが、互換性のある最後のバージョンのアプリをダウン

元記事を表示

UITextFieldでキーボードのサジェストとフォーカスの動きが意図しない件について

# 事の始まり
サービスの新規登録画面を作り直すことになりました。

内容としては簡単なもので、項目は以下の通り。
・メールアドレス入力
・パスワード入力
・パスワード再入力

`UITextField`をパラパラっと設置して、キーボードのタイプを指定して、

最後にパスワードは見えないように`isSecureTextEntry`を忘れずに。

簡単ですね?!!

“`SignUpViewController.swift
class SignUpViewController: UIViewController {
@IBOutlet private weak var emailAddressText: UITextField!
@IBOutlet private weak var passwordText: UITextField!
@IBOutlet private weak var rePasswordText: UITextField!

override func viewDidLoad() {
super.viewDidLoa

元記事を表示

【SwiftUI】APIとJSONで取得したものをList表示する方法【tutorial】

## 今回作成するアプリ
![1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517666/28f0f0ff-6165-e224-6899-ac88b99f6fec.gif)
## はじめに
今回は初めてSwiftUIでAPIを叩いてJSONを取得し、List表示する方法をご紹介したいと思います。
よってこの記事は、SwiftUIは触ったことがあるが、APIやJSONは初めてと言う方向けの記事です。
尚、APIやJSONはなんぞやと言うことについては、様々な良記事が沢山ありますのでそちらを参照下さい。
## 環境
・ /macOS Big Sur 11.3
・ SwiftUI : 2.0
・ Xcode : 12.4
## サンプルJSON
今回は初めてJSONを取得し、Listで表示させる為、オーソドックスな天気APIとかではなく、様々なJSONのサンプルが用意されている[jsonplaceholder](https://jsonplaceholder.typicode.com/)を使用してきます。

元記事を表示

【Swift】Compact状態のDatePickerに戻る処理を行う

##新しいDatePicker
iOS14からどうやらDatePickerの挙動が変わったらしく、今までのドラムロール式の日付・日時選択からカレンダー表示の様な選択方法が選べるようになりました(従来のDatePickerも引き続き使用出来る)。
しかしこのポップアップされるDatePickerは日付を選択時に一つ前に戻る機能が備わって居らず自分で書いて選択時に戻る処理を入れてあげる必要がある。
![CompactDatePickerが表示されたiPhoneSimulator](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176908/d9a5c518-76be-c63c-bab2-bc7c2d0b940b.png)

##コード
“`Swift:ViewController
@IBAction func CompactDatePicker(_ sender: UIDatePicker) {
// 日付選択時に選択前の画面に戻る
self.dismiss(animated: true, comp

元記事を表示

Multipeer ConnectivityでのP2P通信(Swift)

![Xcode-12](https://img.shields.io/badge/Xcode-12-brightgreen) ![Swift-5.3](https://img.shields.io/badge/Swift-5.3-brightgreen) ![iOS-14](https://img.shields.io/badge/iOS-14-brightgreen)

## はじめに
iOS の端末間で通信とかしたいなと思い [Multipeer Connectivity](https://developer.apple.com/documentation/multipeerconnectivity) について調べました。

ソース :point_right: [GitHub](https://github.com/adventam10/MultipeerConnectivitySample)

## Multipeer Connectivityとは
Multipeer Connectivity は Wi-Fi と Bluetooth を使って iOS 端末間の近距離通信(ピア・ツ

元記事を表示

M1 macでIPA processing failedを解決する

## 環境

– m1チップのMacBook air
– xcode12.3

## 症状

– ipaを作成するためにarchiveする
– Organizer画面からDistributeAppする
– adhocを選択してnextをクリック
– 次の画面に移動して1秒くらいで`IPA processing failed`と表示され、ipaの作成に失敗する
![スクリーンショット 2021-02-19 10.43.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268579/130e8924-2f18-689b-4dd3-4264c3a9a073.png)

– show logから`IDEDistribution.standard.log`を確認すると下記のようなlogがのこっている

“`
description = “Configuration issue: platform AppleTVSimulator.platform doesn’t have any non-simulator

元記事を表示

Vision+CoreML+Metal で信号機の点灯色を読み取ってみる

色の表現として**HSV色空間**というものに触れる機会があったので、信号機の色を読み取ってみた。
信号機の画像認識には [YOLOv3-Tiny](https://developer.apple.com/jp/machine-learning/models/) のCore MLモデルを利用。
<完成イメージ>
![demo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/71605/e3ba23fe-1329-527b-97c0-3d8f00015fce.png) ![demo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/71605/ae2eb924-5468-070d-4784-fcd7c62599a3.gif)
※このgif画像は外で撮影した動画をモニタで再生し、それをiPhoneで撮影。

#### 「色」をどう読み取るのか 〜HSV色空間について〜
業務でアプリ開発をしていて色の指定にはRGBを使っていて、

元記事を表示

[tf2.x] VisionTransformer(ViT)を用いて画像分類(ついでにiOSで動かしてみる)

# はじめに
この記事ではVisionTransformer(ViT)を用いて画像分類を行います。
ViTって何?って方は[こちらの記事](https://qiita.com/omiita/items/0049ade809c4817670d7)が参考になるかと思います。

簡単にいうと自然言語処理等で猛威を奮っているTransformerを画像に応用したものです。自分は画像の研究はしていませんでしたが、自然言語処理においてRNNが駆逐されていったのと同じように画像でもCNNが駆逐されていく日も近いのかもしれません。

[以前](https://qiita.com/SeeLog/items/e622f528e6c9a8cc9d43)はInceptionV3というものを使って遊びましたが、今回はViTを使って遊んでみたいと思います。

# ViTのメリット・デメリット
InceptionV3を用いた画像分類と比較するとメリットは以下の通りだと思います。

– CNNを用いずTransformerのみで計算を行うため、より高速に推論が可能
– いろんなタスクでSoTAはViTがとってるらしい

元記事を表示

【Swift】タプル型の便利な使い方(備考録)

## 導入
Swiftを使っていて、これまでタプル型を自分で実装して使う機会がなかったんですが、
開発していたらタプル型ってこういう時に使えばいいんだという気づきがあったため記事を書きました。

僕はMVPモデルでアプリ開発をしていた時に、タプル型の利便性に気付かされたので、今回はMVPモデルで作ったサンプルアプリを元に解説します。
※あまりに簡素なサンプルアプリであり、Modelは不要なので今回は、ViewとPresenterのみを使用します。

■ MVPモデルについてはこちらの記事が大変参考になりました
https://qiita.com/hicka04/items/25be38a90fdde29c97c2

## サンプルアプリについて
下記に画面のキャプチャを載せました。
「計算ボタン」をタップすると、画面上に書かれている足し算を行い、水色の枠の部分に答えを表示します。
TupleApp.pngJenkinsのBuild AgentをMac上に構築する

Jenkinsを使ったiOSアプリのCI/CD環境を構築するために、ビルドエージェントとしてmac miniを登録する機会があったため手順をまとめておきます。

基本的な流れは GitLab CI Runner に近いです。
https://qiita.com/takamii228/items/64fd6879e6acce845980

なお今回利用したJenkinsのバージョンは 2.235.2 です。

## mac miniの設定をする

まずmac miniでJenkinsのAgentが動作する準備をします。

JenkinsのAgentを動作させるためにはJavaが必要なのでHomeBrew経由でインストールします。

“`shell
$ brew install openjdk@11
$ export PATH=”/usr/local/opt/openjdk@11/bin:$PATH”
$ java -version
openjdk version “11.0.9” 2020-10-20
OpenJDK Runtime Environment (build 11.0

元記事を表示

iOS Simulatorのスクリーンショットがデフォルトでデスクトップに保存されるけど保存先を変えたい

iOS Simulatorを利用中にキーボードのCommand + Sを押すとスクリーンショットが撮影されディスクトップに保存されます。

– Altを押しながらCommand + Sを押すとスクリーンショットの保存先を選択できます
– 次回はCommand + Sだけで指定した保存先に保存されるようです
– デフォルトの保存先にするか決めるチェックボックスが表示される場合もあるらしい
– Command + Control + Cを押すとスクリーンショットがクリップボードにコピーされます
– Excelスクリーンショットエビデンスが高速に作れます

参考
[iphone – Take screenshots in the iOS simulator – Stack Overflow](https://stackoverflow.com/questions/7092613/take-screenshots-in-the-ios-simulator)

元記事を表示

pod install実行時に`target overrides the OTHER_SWIFT_FLAGS build setting defined`が表示され、追加したライブラリがロードできない

## 環境
Xcode Version 12.4
MacOS BigSur 11.2.1

## 発生した問題
プロジェクトのPodfileにSnapKitを追記し、`pod install`を実行したところ、
`Cannot load underlying module for ‘SnapKit’`という問題が発生しました。
追加したライブラリのインポートはできるがロードができていない様子。

“`
$ pod install

Analyzing dependencies
Downloading dependencies
Installing SnapKit (5.0.1)
Generating Pods project
Integrating client project
Pod installation complete! There are 12 dependencies from the Podfile and 22 total pods installed.

[!] The `MySampleApp [Debug]` target overrides the `OTH

元記事を表示

iOSアプリケーションにキーボードショートカットのサポートを追加(UIKitとSwiftUI両方で)

この短い記事では、アプリケーションにキーボードショートカット (keyboardShortcut, UIKeyCommand) 機能を加える方法について説明します。これは、ユーザーがiPadにキーボードを接続した状態でアプリを実行している場合に便利です。

多くの人はiPad用のキーボードカバーを購入しているので、アプリケーションにキーボードショートカットを実装しておくと便利になるでしょう。実装はほんの数分で完了します。

アプリケーションが提供するすべてのショートカットを表示するには、iPadキーボードのコマンド ⌘ キーを長押しします。それにより提供されているショートカット一覧のメニューが表示されます。

# SwiftUIのアプリケーションに

修飾キー `keyboardShortcut` を使うことで、SwiftUIのインタラクティブなU

元記事を表示

画面遷移時の値渡しのやり方【Swift 5】

# はじめに
この記事では、異なるファイル間で(classを跨いで)値をやりとりする方法を紹介していきます。
また、付随するものとして、segueを使わずに画面遷移を行う方法も紹介していきます。

### 環境
・macOS catalina
・Xcode version 12.2
・swift 5.3.1

## コードを用いた画面遷移

まずは遷移先の情報を取得します。
この際、””内にはStoryBoard IDを、as!以下は、遷移先のcocoa touch ファイルの名前を入力します。
![スクリーンショット 2021-02-20 0.27.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1128140/36660e02-a89b-3221-d1e7-7c009692e195.png)
なお、StoryBoard IDは写真の赤丸で囲われた部分から入力します。この時、Use StoryBoard IDに忘れずにチェックを入れるようにしてください。

“`php5
//遷移先の情報の取得

元記事を表示

【Swift】API、JSON解析を使う

今回はこちら↓で作った`Swift5Bokete`アプリの復習
[【iOS14対応】未経験者がiPhoneアプリ開発者になるための全て iOS Boot Camp](https://www.udemy.com/share/103I3AAEcTdVhUTHQH/)

![61dfbaebcff9d63d53eabc251ec044c4.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/956215/b63f2f97-4f1e-3fab-efe0-d2110a0488ec.gif)

検索欄にキーワードを入力すると、関連する画像が出てきます。
気に入った画像に適当にネタを入れて`決定`ボタンを押し、`シェアする`ボタンを押すとスクリーンショットが作られ、Twitter等に投稿することができます。

このアプリでは
①ライブラリの導入方法
②APIの使い方
③JSONの使い方
を学びました。

# cocoapodsでライブラリを導入する
ライブラリに関しては動画内でも[こちら](‘こちら’ https://qi

元記事を表示

【Swift5】カスタムクラスをUserDefaultsへ保存する

# カスタムクラスでスマートにコーディングするぜ!

みなさんご存知の通り、Swiftにももちろんカスタムクラスを作る機能があります。
しかし!カスタムクラスはUserDefaultsに直接保存できない!~~(Realm使えよ)~~
そこでSwift5でのUserDefalutsへのカスタムクラス保存をまとめておきます。

# カスタムクラスをバイナリ形式に変換する
“`swift:Task.swift
import UIKit

class Task: NSObject, NSCoding {
var name: String!
var date: Date!

// 初期化
init(id: Int, name: String, date: Date) {
self.name = name
self.date = date
}

// ここから変換用コード
// NSKeyedArchiverで呼び出されるエンコード処理
func encode(with coder: NSC

元記事を表示

[Swift5] UIViewを『自由変形』する

UIViewを自由変形する。
拡大縮小や回転ではなく『自由変形』である。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134740/3863d144-5154-c286-ee85-f7eff1c78e87.png)

## JoshQuadViewを使う
stackoverflowで見つけた JoshQuadView を拝借するが、Swift5では若干の変更が必要になる。
Swift5で使えるよう修正したものをgistにアップしておいた。
https://gist.github.com/Nouris-Inc/9dcc78ce35116cc2920617ec0576c818

stackoverflow
https://stackoverflow.com/questions/9470493/transforming-a-rectangle-image-into-a-quadrilateral-using-a-catransform3d

中でやっている事は`CATransform3D`

元記事を表示

UITextViewを継承せずにPlaceholderを設定する

# 概要

表題の通り `UITextView` にプレースホルダーを設定していきます。
サブクラスを作って実装する例はいくつかあったので、違う方法で実装していきたいと思います。

1分くらいで読み終わります。恐らく。

# 環境
– Xcode 12.4
– Swift 5.3.2

# GIF
編集状態に入るとプレースホルダーが消え、
編集状態を終えると **文字が未入力の場合は** プレースホルダーが表示される様子です。

|文字入力なし|文字入力あり|
|:—:|:—:|
||

元記事を表示

OTHERカテゴリの最新記事