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

iOS関連のことを調べてみた2022年12月31日
目次

【SwiftUI】リストにスワイプアクションを追加する

# はじめに
https://developer.apple.com/documentation/swiftui/view/swipeactions(edge:allowsfullswipe:content:)

iOS15から`swipeActions`というメソッドが追加されていました。
以下のような機能を実装することができます。
![Simulator Screen Recording – iPhone 14 – 2022-12-30 at 21 26 13](https://user-images.githubusercontent.com/84154073/210070104-dc608f68-76ed-4290-a86c-49a1d183c535.gif)

# 実装
“`swift
import SwiftUI

struct ContentView: View {
var body: some View {
List {
Text(“サンプル”)
.swipeActions(edge: .

元記事を表示

【SwiftUI】iOS16からハーフモーダルが使えるようになったので使ってみた

# はじめに
以前はSwiftUIがハーフモーダルに対応していなかったのでUIKitを使用してハーフモーダルを実装しました。

https://qiita.com/SNQ-2001/items/f7c1df423ad633bec7e0

今回は公式で対応されたハーフモーダルを使ってみたいと思います。

[`presentationDetents`](https://developer.apple.com/documentation/swiftui/view/presentationdetents(_:)?changes=_2_1)

# 使い方
|タイプ|使い方||
|-|-|-|
|`.large`|`.large`|通常のsheetと同じ高さ|
|`.medium`|`.medium`|画面の半分の高さ|
|`.height`|`.height(100)`|heightで高さを指定できる|
|`.fraction`|`.fraction(1/3)`|画面の何分の何を指定できる(例は三分の一)|
|`.custom`|`.custom(CustomSheetHeight.self)`

元記事を表示

[!] CocoaPods did not set the base configuration of your project because your project already has a custom config set. の解決法

# はじめに
Flutterで新しくプロジェクトを作成してからFirebaseに接続してビルドすると、大体CocoaPods周りでエラーが。

“`console
CocoaPods did not set the base configuration of your project because your project already has a custom config set. In order for CocoaPods integration to work at all, please either set the base configurations of the target `Runner` to `Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig`
“`

毎回忘れて調べてしまうのでここに記録したいと思います!!!:sweat_smile:

# Release.xcconfigを編集
`/ios/Flutter/Release.xcconfig`に?を追加

“`
#incl

元記事を表示

【SwiftUI】レトロスタイルを実装してみた

# はじめに
[こちら](https://appmaster.io/ja/blog/2022nian-nomobairuapuriuidezainnoaideatotsupu10)のサイトを見ていたら90年代のスタイルがイケてたのでSwiftUIで再現してみました。
![appmaster](https://user-images.githubusercontent.com/84154073/209798974-add7bf62-234a-46b3-a215-4852594bec61.png)

# サンプルアプリ
![Simulator Screen Recording – iPhone 14 Pro – 2022-12-28 at 19 37 47](https://user-images.githubusercontent.com/84154073/209799326-ffa20435-8047-41e1-9735-0ec843263049.gif)

# 実装
“`swift:ContentView
import SwiftUI

struct ContentView: Vi

元記事を表示

【IT-DIY】AppleWatchを使って、インターネット回線を必要としないチャットツールの作成(Part.2)

※こちらの記事はPart2です。
 Part1はこちら↓
 https://qiita.com/nextvision-sugakir/private/d2c9222160284639a156

はじめまして、IT企業に入社して1年目のSEです。
Part1では開発までの道のり、DIYするアプリの概要までをご紹介しました。(Step1~Step3)
Part2では、DIYの実施から完成品の試用までをまとめました。

# 【Step4】いざ実装
まず仕様をおさらいすると、iPhoneからAppleWatchにメッセージを送信する。AppleWatchはメインのアプリ画面を更新し、画面の上部に新規のメッセージを表示する。
今回作る機能は以下の通りです。
– ボタン、ラベルの実装(AppleWatch側アプリ)
– メッセージの入力機能(iPhone側アプリ)
– データの送受信の機能(両者の疎通確認)

となります。それぞれ書籍等を参考に実装してみます。

まずはiOSのアプリからAppleWatchのアプリに接続したいと思います。既にOS側が提供してくれているWatchConnecti

元記事を表示

【IT-DIY】AppleWatchを使って、インターネット回線を必要としないチャットツールの作成(Part.1)

はじめまして、IT企業に入社して1年目のSEです。
Part1では開発までの道のり、DIYするアプリの概要までをご紹介します。(Step1~Step3)
# はじめに
昨年、個人的にAppleWatchを購入しました。今年の春に入社した私は、弊社の取り組みでIoT/ウェアラブルデバイスを活用したDIYをするという活動があり、これはまたとないチャンスと思い、今回AppleWatchのアプリ開発をすることにしました。標題のアプリを作ろうと考えた経緯は【Step3】でご説明します。

…とはいっても、もともとアプリ開発をしていたわけでもないですし、iPhoneユーザではありましたが、iOS(ましてやWatchOS)の知識があるわけではありません。1から勉強するしかない!と思い、以降の手順でDIYを行いました。

# 【Step1】書籍を購入
そもそもAppleWatchのアプリ開発はあまり頻繁に行われているものではなく、インターネット上のWebサイトの情報は古いものばかりでした。
そこで私は詳しくまとめられている、AppleWatchのアプリ開発に関する書籍を購入しました。
いざ読んでみ

元記事を表示

【SwiftUI】タイピング風テキストアニメーションを作ってみた

# はじめに
ChatGPTはAIからの返答がタイピング風のアニメーションで返ってきます。
これをSwiftUIで再現できないかなと思い試してみました。

![画面収録_2022-12-27_21_24_15_AdobeExpress](https://user-images.githubusercontent.com/84154073/209666946-f0f3dfb6-0459-40d9-a56e-3102bbf5fd1c.gif)

# サンプルアプリ
ChatGPTの返答をそのまま表示してます
![Simulator Screen Recording – iPhone 14 Pro – 2022-12-27 at 21 35 11](https://user-images.githubusercontent.com/84154073/209667552-b15dfd1c-821d-4279-afb9-558920d3c279.gif)

# 実装
“`swift:ContentView
import SwiftUI

struct ContentView: View {

元記事を表示

NSAttributedStringと絵文字でなんで文字化けになる?

# 背景
超久しぶりに文字列と戦ったのでここで残しておきたい!
みんなも文字のカウントいつ何を使えばいいか思い出してみましょう

例のこちら文字列値がある
“`swift
@Binding var text: String
“`

でその文字列に超えた制限だけハイライトをしたいな〜と思ったあなたへ、文字のみであればtext.countでも全然十分!
ただ、multibyte絵文字含めてしまうとどう計算すればいいのでしょうか?

# text.count
上記の書いた通りに文字しか想定していない場合はこれだけでいける!

“`swift
let text = “Hi my name is Adam!”

print(text.count) // 24

let textView = UITextView()
textView.frame = CGRect(x: 150, y: 200, width: 200, height: 50)
let attributedText = NSMutableAttri

元記事を表示

【個人開発】交換日記のiOSアプリを作ってみました【Flutter】

___「Exchange Diary」という交換日記を誰とでもできるアプリをリリースしました!___

https://apps.apple.com/jp/app/exchange-diary/id6444697825

– **誰でもいいから、誰かに話を聞いて欲しい**
– **誰かの日常を覗いて見たい**

そんな人に是非使って欲しいアプリになります。誰かとマッチングしたら、交換日記が始まります。
家族や友達を誘って始めることも可能です。

技術はFlutter、Firebaseを使いました。
詳しい話は別のところでしようかな。するかな。どうかな。

僕自身も、奥さんや友達とこの交換日記をはじめてみまして、新しい発見や刺激を得ている気がします笑

みなさまにもこのアプリで交換日記の面白さを少しでも味わっていただけたら幸甚です

元記事を表示

【SwiftUI】ロック画面ウィジェットの実装

# iOS16新機能
iOS16からロック画面ウィジェットが新しく登場しました。

ロック画面ウィジェットは、iOS14から登場したホーム画面ウィジェットを追加するWidgetFamilyに以下3点が新しく追加されました。
・accessoryRectangular = 晴れアイコンの箇所
・accessoryCircular = 月アイコンの箇所
・accessoryInline = 12月27日火曜日のテキストの箇所

今回はRectangularとCircularウィジェットの実装方法を紹介します。

# 1.WidgetExtensionの作成
File→New→Target→Widget Extension
【LIFF・LINEログイン】自動ログインに失敗する・ユニバーサルリンクエラーの解消について

こんにちは。お久しぶりです。

今回は以下の問題について解説していこうと思います。

– [外部ブラウザにおいてLINEログイン(自動ログイン)に失敗する](#自動ログインの問題について)
– [外部ブラウザにおいてLIFFのURLスキーム “https://liff.line.me/{LIFFID}“ にアクセスした際に、LINEアプリ内のブラウザではなく、外部ブラウザでエンドポイントURLに遷移してしまう](#liffでの問題について)
– [これらの問題の原因について](#これらの問題の原因について)
– [備考](#備考)

:::note warn
今回取り上げるこれらの問題は主にiOS版LINEを利用しているユーザーで発生する場合があるようです
:::

### 自動ログインの問題について

LINEログインの開発者の皆様はエンドユーザーなどからの不具合の報告などで、以下のような一度は目にしたことがあるのではないでしょうか。

– `LINEアプリが未インストール、もしくは、ユニバーサルリンクが正しく動作していません。メールアドレス・パスワードを入力してログインしてくだ

元記事を表示

【SwiftUI】Styleの指定方法を簡潔にする

# はじめに
SwiftUIはUIコンポーネントにスタイルが指定できるようになっています。
そんなスタイルには指定方法が2つあります。
TabViewのPageスタイルを例に挙げてみます。
以下の2つの指定方法が考えられます。

“`swift
TabView {
Text(“タブ1”)
Text(“タブ2”)
Text(“タブ3”)
}
.tabViewStyle(PageTabViewStyle())
“`
“`swift
TabView {
Text(“タブ1”)
Text(“タブ2”)
Text(“タブ3”)
}
.tabViewStyle(.page)
“`

これらは同じ動きをします。
比べてみると下の方が簡潔に書けていると思います。

今回は`.page`のようにカスタムスタイルを指定できるようにする方法を紹介します。

# サンプルアプリ
システム設定のようなリストを作成してみようと思います。
![IMG_1867](https://user-images.githubusercontent.com/8415407

元記事を表示

[Swift]遅延処理(asyncAfter)をキャンセルする

# はじめに
時間差で処理を実行したい場合に使う`asyncAfter`の処理を、何らかのアクションでキャンセルしたい場合の方法を紹介します。

# コード
“`Extension.swift

extension DispatchQueue {

func cancelableAsyncAfter(deadline: DispatchTime, execute: @escaping () -> Void) -> DispatchWorkItem {
let item = DispatchWorkItem(block: execute)
asyncAfter(deadline: deadline, execute: item)

return item
}
}
“`

`DispatchWorkItem`を返す関数をextensionに追加します。

“`ViewController.swift
final class ViewController: UIViewController {
privat

元記事を表示

React Native で OS判定 を実装する方法

## やりたいこと

React Native で OS判定 を行い
iOS と Android で処理を出し分けたい

## 使用技術

– react : 18.1.0
– react-native : 0.70.2
– @types/react-native : 0.70.0
– typescript : 4.8.3

## 実現方法

[React Native Platform](https://reactnative.dev/docs/platform) を使用すれば
iOS と Android で処理を分けることは実現可能

以下に、実際のサンプルコードを記載しておきます。

### iOS判定をしたい場合

`Platform.OS === ‘ios’` で判定を行う

“`tsx
import { Platform } from ‘react-native’;
const isIOS = Platform.OS === ‘ios’
console.log(isIOS)
// expected output : iOSの場合`true`になる。Androidの

元記事を表示

React Native | fastlane コマンド実行時に README.md が自動生成されないようにしたい

## やりたいこと

ローカルPCから `fastlane` コマンドを実行したときに
fastlaneディレクトリ配下に `README.md` が自動生成されないようにしたい

## なぜ、この作業をやりたいと考えたのか?

fastlaneディレクトリ配下の `README.md` を独自で編集していたので、fastlaneコマンドを実行するたびに `README.md` に Gitの差分が出るのが面倒だったから

## なぜ、毎回 README.md が作成されるのか?

デフォルトの設定では`fastlane`コマンドを実行時に
`fastlane/README.md`が自動で作成される仕様だから

## 実現方法

`fastlaneディレクトリ` の Fastfile に `before_each` block を追加する

Android も iOS も追加する処理は同様の処理で問題ない。

### Android の場合

“`ruby
# android / fastlane / Fastfile

default_platform(:android)

元記事を表示

iOSでTFLiteを動かすのにとても苦労した

前回の記事「[姿勢推定の精度をval2017で評価しつつiOSでの動作を試していく](https://qiita.com/mbotsu/items/13442b54a2358e084bec)」ではCoreMLを試しました。
今度はTensorFlowLiteでもVitPoseを動かしてみます。

## モデルをTFLiteに変換する

Pytorch -> ONNX -> Tensorflow -> TensorFlowLiteの順に変換しました。
注意点としては、proftobufのバージョン違いが発生するので変換する環境は別々に作った方がいいです。

### Pytorch -> ONNX

ViTPoseが提供しているONNX変換コードを使います。
https://github.com/ViTAE-Transformer/ViTPose/blob/main/tools/deployment/pytorch2onnx.py

変換に必要なViTPoseの実行環境を作るのに地味にハマります。
環境が出来ればコマンドラインから実行します。
“`
$ python tools/depl

元記事を表示

【Xcode】iOS16以上の端末で、OTA配信しているipaが開けないエラー

# 環境
– Mac M1 OS Monterey12.6
– Xcode 14.0.1
– iPhone13Pro iOS 16.1.2

# OTA配信しているipaが開けない
iOS16の端末でOTA配信しているipaをインストールしたが、`”アプリ名”をインストールできません。あとでやり直してください。`とダイアログが出続けてしまう。
iOS12や13では正常にインストールすることができている。

# 解決までに行ったこと
#### ①最新のXcodeでアーカイブを作成する
筆者はXcode13と14両方使用する機会があったため、案件のアプリによって対応するバージョンが異なっていることを忘れていたので、もう一度アーカイブを作成しました。ただそれでもうまくいかず、、

#### ②manifest.plistをもう一度作成する
原因を考えていると、最近`manifest.plist`のファイルを作り直したらしくそれでOTAを配信行っていました。
なので、Xcode14の方でもう一度作り直してインストールするとダウンロードすることができました。

# 参考
`manifest.pl

元記事を表示

【SwiftUI】iOS16から登場したPasteButtonについて調べた

# はじめに
iOS16から追加されたコンポーネントで使ったことがなかったので調べてみました。

# 基本的な使い方
`payloadType`には[こちら](https://qiita.com/SNQ-2001/items/093d56fba9bdb9c838e3)にある型が指定できると思います。
戻り値は指定した型の配列です。

複数の型を取得する方法もありますが、使い方があまり変わらないので今回は省略します。

“`swift
import SwiftUI

struct ContentView: View {
@State var text: String = “”
var body: some View {
VStack(spacing: 50) {
TextField(text: $text, axis: .vertical) {
Text(“テキストフィールド”)
}
.textFieldStyle(.roundedBorder)

元記事を表示

カメラからQRコードの検出、ハイライト表示、SwiftUI対応ビューの作成

この記事では、カメラからのビデオストリームを表示し、
QRコード(または他のタイプのコード)を検出し、
その周りに矩形を表示することによってコードを強調するビューを作成することについて話します。
また、SwiftUI互換のビューを作成し、SwiftUIのビュー内で使用できるようにします。

![RPReplay_Final1671678172_AdobeExpress.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/94abc373-5262-de1b-0d03-130b4166d1af.gif)

# 変数を用意する

まず、スキャンした結果とカメラプレビューレイヤーを保存するために、以下の変数を追加します。

“`swift
@Binding var scannedCode: String?
var viewSize: CGSize

private var captureSession = AVCaptureSession()
private var qrCodeFrameV

元記事を表示

[TCA]推しがv1.0にいってくれたらしぬ

# はじめに

この記事では、わたくしの推しOSSであるThe Composable Architecture(TCA)のバージョン1.0への道について、本家Discussionsに書かれていたことを軽く解説したり、これまでのバージョンを振り返ったりしてみます。

# 本題

## なぜまだv1.0ではないのか

v0.42.0の現在、v1.0へと至るロードマップのようなものがGitHub上のDiscussionsでRoad to 1.0というタイトルですでに述べられています。

https://github.com/pointfreeco/swift-composable-architecture/discussions/1477

上記を読むと、

> We’ve held off on 1.0 for this long not because we believe the library is in beta/unstable territory, but because there were a few key problem areas of library use th

元記事を表示

OTHERカテゴリの最新記事