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

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

アニメ変換をiPhoneでつかいたい — CoreMLに変換すればOK

#AnimeGAN2-pytorchをiPhoneで使える形式に変換する方法です

変換ずみモデルを入手したい方はこちら:

https://github.com/john-rocky/CoreML-Models

アニメ変換機械学習モデルであるAnimeGAN2をiPhoneアプリで使えるようにします。

#AnimeGANはかっこいい、、でもPythonかあ。。。

アプリケーションでPythonのモデルを使うには、サーバーに画像をアップして処理したり、、、と大変そう。

#CoreMLに変換すれば

元記事を表示

よく使うコマンド集

コマンドを使用する際に、いつも検索する事から始めてしまい、時間も取られてしまうので、予めメモとして投稿しようと思いました。
– – –
#指定先に移動する
“`
cd 指定ファイル、フォルダまたはディレクトリ
“`
cdの後に半角スペース、後は指定先をドロップアンドドラッグでOKです。
#gitの初期化
“`
git init
“`
#設定したRepositoryの確認
“`
git remote -v
“`
#コミット履歴確認
“`
git log
“`
#ローカルエリアの差分確認
“`
git status
“`
#ステージングエリアに保存(全て)
“`
git add .
“`
#コミットする
“`
git commit -m”任意のメッセージ”
“`
#現在のブランチの確認
“`
git branch
“`
#リモート環境にアップロードする
“`
git push origin master
“`
“`
git push origin main
“`
– – –
#・トラブル発生時によく使うコマンド
#ファイル全体のキャッシュ削除
`

元記事を表示

【SwiftUI】アラートを表示する

#環境
Xcode 13.2.1
Swift 5.5.2

#実装
ボタンをタップした時にアラートを表示する場合は以下のようなコードになります。

“`swift
struct ContentView: View {
@State private var isShowingAlert: Bool = false

var body: some View {
Button(“アラートを表示する”) {
isShowingAlert = true
}
.alert(“Text”, isPresented: $isShowingAlert) {
Button(“Button1”) {
// タップした時の処理
}
Button(“Button2”) {
// タップした時の処理
}
} message: {

元記事を表示

Unity の SystemInfo.deviceModel が表示するiPhoneの情報

Unity の SystemInfo.deviceModel が表示する iOS の情報についてです。

# 結論
https://www.theiphonewiki.com/wiki/Models の Identifier が表示されています。

# 背景
問い合わせ用に Unity の SystemInfo.deviceModel の情報を取得しようとして、自身の端末 iPhone 11 Pro が iPhone 12,3 と表示され、なんのこっちゃと思ったので調べました。
Android は未調査です。

# 参考
* [iPhone iPad 端末での 一般名と内部名の対応表](https://qiita.com/YumaInaura/items/31838a72678fa09d7e19)

元記事を表示

UIViewでTap検出

UIViewでTap検出を行う

・Viewの作成時にGestureRecognizerをタップを検出したいUIViewに追加する

~~~
UIView* LabelA;
~~~

~~~objc
// TapGestureRecognizer作成 タップ検出時LabelAをコールするよう登録
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(LabelATap)];

// UIView LabelA にタップ検出をアタッチ
[self.LabelA addGestureRecognizer:tapGesture];
~~~

~~~
// LabelAタップ検知時処理
-(void)LabelATap{

}
~~~

[Apple Developler](https://developer.apple.com/documentation/uikit/uitapgesturerecognizer)

元記事を表示

文字列からスペースと改行を削除

# 環境
– Swift ver 5.5.1

# コード
## 文字列の前後から

利用しているメソッド

– Apple Developer Documentation – [trimmingCharacters(in:)](https://developer.apple.com/documentation/foundation/nsstring/1415462-trimmingcharacters)

### スペースを取り除く

“`swift
let text = “ 前後にスペース ”
let trimmedText = text.trimmingCharacters(in: .whitespaces)
print(trimmedText, terminator: “”)
// 出力:”前後にスペース”
“`

### 改行を取り除く

“`swift
let text = “\n前後に改行\n”
let trimmedText = text.trimmingCharacters(in: .newlines)
print(trimmedText, terminat

元記事を表示

プリクラ並みの美肌フィルターをつかう #YUCIHighPassSkinSmoothing

#iPhoneでつかえる美肌フィルターのつかいかたです

#見たいものを見せることがサービスには肝要です
現代は浄化されたものが好まれる時代だと思います。
SNSでも、何も加工せずに顔写真を載せている人はむしろ珍しいのではないでしょうか?
もしもあなたが画像アプリを作りたい場合、美肌フィルターが必要になることもあるかもしれません。
さて、どのようにして商用アプリ並みの美肌加工を実装できるのでしょうか?

Swift Package内のリソースにアクセスする便利な方法

## はじめに

本記事は [Swift/Kotlin愛好会 Advent Calendar 2021](https://qiita.com/advent-calendar/2021/love_swift_kotlin) の14日目の記事です。
空いていたので埋めました。

Swift Package内のリソースにアクセスするには `bundle:` に `Bundle.main` でなく `Bundle.module` を指定する必要があります。
毎回指定するのが手間なので、私は便利メソッドを実装し、さらに __リソースへのアクセスを1つのSwiftファイルにまとめています__ 。
その方法を紹介します。

## 環境

– OS:macOS Big Sur 11.6
– Swift:5.5.2
– Xcode:13.2.1 (13C100)

## リソースの格納

Swift Packageにおいて、リソースのほとんどは `Sources/{target name}/Resources/` フォルダに格納すれば自動的にリソースと認識します。

## リソースにアクセスする便利な方

元記事を表示

[iOS] AR ポータルアプリを作る

![TitleImage](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/420332/36bd045f-376b-d8ef-976c-0050c362c557.png)
AR ポータルアプリ(AR Portal App)は、入口(Portal)を通って特別な空間(内部空間)に入る体験を AR(拡張現実) を使って提供します.iOS SDK の ARKit と RealityKit を使うと数行のコードでこれを実現することができます.

# 仕組み

内部空間を大きな箱や球で囲み、その内面にその世界の風景を貼り付けます.内部空間に入ると外部のカメラ映像が遮蔽されるため没入感が得られます.更に、その内部空間自体を外部から見えないようにすると、サイズや中の様子が分からないため未知の世界への期待感などを持たせることもできます.RealityKit の Occlusion Material はその内部を遮蔽するので、これを使って内部空間を外部から見えなくすることができます.

![pict1.png](https://q

元記事を表示

【Swift】CoreBluetoothの使い方 その2:セントラルの実装例

#はじめに
Corebluetoothのセントラル側の実装例について記載していきます。

[①その1:BLEにおける役割](https://qiita.com/JunNonaka/items/348eeecc63cbce4cfed0)
②その2:セントラルの実装 ← 今回はここ

#処理の順番
・必要な機能の初期化
・スキャン処理
・接続処理
・ペリフェラルの情報を取得して通信を行う。
・切断
上記順番に処理を行いますので、順番に記載していきます。

#必要な機能の初期化
・BLE関連の設定の追記
info.plistに「Privacy – Bluetooth Always Usage Description」を追加

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671830/ab5e3db4-7d3b-1685-bc15-14d6f4c2b60c.png)

試すだけであれば上記だけで問題ありませんが、実際にアプリに組み込み、Appstoreconnectに上げる場合はペリフェラル側

元記事を表示

【Swift】CoreBluetoothの使い方 その1:BLEにおける役割

#はじめに
2022年はOutPutしていくぞ!!ということで、
初めてQiitaに投稿しますが、iOSでのBLEの使い方、CoreBluetooth周りの投稿をしていきます。

①その1:BLEにおける役割 ← 今回はここ
[②その2:セントラルの実装例](https://qiita.com/JunNonaka/items/cde2f4f3934a3d452770)

#CoreBluetoothとは?

>Core Bluetoothフレームワークは、アプリがBluetooth搭載の低エネルギー(LE)および基本レート/拡張データレート(BR/EDR)ワイヤレステクノロジーと通信するために必要なクラスを提供します。
Apple Developerより
https://developer.apple.com/documentation/corebluetooth

iOSでBLE(Bluetooth Low Energy)を使う時に使用するフレームワークです。
iOSでBLEを使う時は基本的にCoreBluetoothを使うことになります。

#BLEにおける役割とは?
CoreBl

元記事を表示

iOS & iPadOS 15 リリースノート日本語訳

# iOS & iPadOS 15 リリースノート

新機能を利用し、APIの変更をテストするためにアプリをアップデートしてください。

## 概要

iOS & iPadOS 15 SDKは、iOS & iPadOS 15を実行するiPhone、iPad、及びiPod touchデバイス用のアプリを開発するためのサポートを提供します。
SDKはMac AppStoreから入手できるXcode 13にバンドルされています。
Xcode 13の互換性要件についてはXcode 13[リリースノート](https://developer.apple.com/documentation/Xcode-Release-Notes/xcode-13-release-notes)を参照して下さい。

## App Store

### 新機能

– [StoreKit](https://developer.apple.com/documentation/storekit) 2はSwiftの同時実行性などの新しい言語機能を利用する最新のSwiftベースのAPIを導入しています。このAPIを使用

元記事を表示

ios申請

## 概要
flutterで作成したアプリをapp storeに申請

## やり方
基本は[こちら](https://qiita.com/Labi/items/3b71b8f5ef065904c1de)のサイトを参考にさせていただきました
## ポイント
archiveする前にビルドする必要があるが、dbの設定をしてあげた
提出したら、appleチームが確認するので、専用のログインIDやパスワードも作成しておいてあげるとよい![スクリーンショット 2022-01-19 15.32.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417196/1571b5af-098b-69b0-58da-1d322bdbe3f2.png)

1 ビルドする
本番環境でアプリをビルドする

`flutter run –flavor prod -t lib/main-prod.dart`

2 archvieする
ターゲットをany ios device(arm64)に設定する
xcodeの上のメニューバーから

元記事を表示

【iOS × MVC】MVC アーキテクチャとは【コードあり コピペでOK】

# 目的
iOS開発における、MVCアーキテクチャを理解すること
筆者の備忘録

# 流れ
1. MVCの誕生
2. MVCの目的
3. 各レイヤーの役割
4. MVCの課題
5. (補足)Presentation Modelパターン
6. 画像表示アプリでMVCの実装 ← コードつき, コピペでOK

# 1. MVCの誕生
ここではMVCが誕生するまでの流れを説明していきます。

コード(:ViewControllerのようなもの) を ウィジェット(:ボタンやテーブル等のUIコンポーネント) に全て記載していた

`メンタルモデル`と違うものになってしまう

1979年にUIの表示をEditor、メンタルモデルをModelと名付けて、責務を分けた。

その後、Editorを「入力に属するもの(Controller)」「出力に属するもの(View)」に分けた。

View-Controller-Model:`MVC`の誕生

#### 補足
`メンタルモデル`とは
**人間が無自覚のうちに持っている、思い込みや価値観**
(例:画面は画面のプログラム、処理は処理のプログ

元記事を表示

ARの使い道が思いつかない人へ ARとはセンシングであるという考え方と、具体例 ARで紙を切り取る

#ARの使い道の考え方と、その具体例です。
具体例では、画像を登録して、現実の紙からその部分を切り取ります。

#ARってなかなか使い道がわからない
ARって楽しそうなものの、イマイチどういうアプリケーションに使えばいいかわからない。

#現実のものとどうインタラクトするかが鍵
リアリティを拡張するもの、ということは、ベースとなるリアルの理解が鍵となります。

#ARはセンシングである

現実を拡張するためには、現実を理解する必要があります。

ARとは、コンテンツを表示するもの、というのに加えて、
「センシングである」
というところから考えてみます。

ARコンテンツの配置は、あくまで現実を拡張する手段の一つであって、
コンテンツを現実のどこに配置するか、それによって何の現実を拡張しているか、がARの目的を形作るのではないでしょうか。

となると、**まずは現実を

元記事を表示

[RxCocoa]プログラムからテキストを変更した場合, textField.rx.textにイベントが流れない

`textField.text = “hogehoge”`とプログラムから`text`を変更しただけでは`textField.rx.text`にイベントが流れてくれない。

RxCocoaのソースを見ると`.valueChanged`イベントが流れた時に`rx.text`が更新されるようである。そのため、`textField.sendActions(for: .valueChanged)`として、明示的にイベントを流せば良い。

“`swift:UIControl+Rx.swift
/// This is a separate method to better communicate to public consumers that
/// an `editingEvent` needs to fire for control property to be updated.
internal func controlPropertyWithDefaultEvents(
editingEvents: UIControl.Event = [.

元記事を表示

UITextFieldの入力値を通貨に自動変換

Combineを使うと割とスッキリ実装できる。
今回のサンプルは日本円のみにしてますが、応用して通貨以外にも色々な単位に自動変換するUITextFieldを作れると思います。

“`swift

class SampleViewController: UIViewController {

let numberFormatter: NumberFormatter = {
let nf = NumberFormatter()
nf.numberStyle = .currency
nf.locale = Locale(identifier: “ja_JP”)
return nf
}()

let textField: UITextField = {
let tf = UITextField()
tf.keyboardType = .numberPad
return tf
}()

private var cancellable = Se

元記事を表示

SwiftUIでルビを振るために必要なこと

# 概要
ルビを振ったUILabelをSwiftUIから利用する実装についてまとめました。

【参考】
https://qiita.com/mlmlykt/items/c8a09d6801b5aac7f24e
https://qiita.com/negi0205/items/6c73128ff2cf680df47c
https://qiita.com/woxtu/items/284369fd2654edac2248

# ルビを振ったNSAttributedStringの生成
“`swift
extension String {
func createRuby(color: UIColor = .black) -> NSAttributedString {
let textWithRuby = replacingOccurrences(of: “(|.+?《.+?》)”, with: “,$1,”, options: .regularExpression)
.components(separatedBy: “,”)

元記事を表示

ARでメタバース 巨大ロボットを出現させる

#大迫力の3Dオブジェクトを操作する方法

#コンピュータのパワーでよりパワフルなコンテンツを

ARってなんだか難しそうな印象ありますか?

#ARKitを使ってスマホでかんたん表示

実はかんたんだったりします。
AppleがARをかんたんに扱えるフレームワークを出してくれています。

#手順
アップルのサイトからUSDZモデルを手に入れます。
https://developer.apple.com/jp/augmented-reality/quick-look/

ロボットという名前のUSDZファイルを読み込んでシーンに追加します。

“`swift
guard let robot = try? Entity.load(named: “robot”) else { return }
let anchor = AnchorEntity(plane: .hor

元記事を表示

“rvictl”が”FAILED”になったときの解決策

# はじめに

「rvictl」はiPhone(実機)の通信ログ(パケットのキャプチャ)を取得する際に使用されるコマンドです。
iPhoneをMacにライトニングケーブルに繋いだ後、Macから以下のコマンドを実行することで仮想的なネットワークカードが作成され、WiresharkなどからiPhoneの通信を参照することが可能となります。

“`text:
$ rvictl -s “iPhoneのUDID”
“`

iPhone(実機)から通信ログ(パケットのキャプチャ)を参照する方法については、他の記事を参照すると良いでしょう。

参考記事
– [iPhone(実機)の通信ログ(パケットのキャプチャ)を簡単に取得する方法](https://qiita.com/shirochan/items/cdb244b12cf5d08d4766)
– [MAC OS CatalinaでiPhoneの通信をキャプチャする方法](https://qiita.com/U_Sukeee/items/82348c82af0242c37d3d)

# “rvictl”が”FAILED”になった
“`text

元記事を表示

OTHERカテゴリの最新記事