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

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

App Groups で共有したファイルを監視してプロセス間の変更を Combine で検知する

## 背景

### App Groups とプロセス間通信

https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_application-groups

> App groups allow multiple apps produced by a single development team to access shared containers and communicate using interprocess communication (IPC).

App Groups は複数のアプリケーションが同じ領域にアクセスできるようにする仕組みです。異なるアプリケーションは別のプロセスで動いて

元記事を表示

【Swift】文字列を比較する

# はじめに
文字列を比較する方法を学んだので記録しておきます。

# 使い方
“`swift
import Foundation
let A = “123”

let B = “456”

let compare = A.compare(B, options: .numeric)

switch compare {
case .orderedAscending:
print(“Aの方が小さいです”)
case .orderedDescending:
print(“Aの方が大きいです”)
case .orderedSame:
print(“AとBは同じです”)
}
“`

# 解説
数字と数字の比較ならわかりやすいですね
しかし、`compare`は数字以外も比較できます。

なぜ数字以外が比較できるのでしょうか
どのようなルールで比較してるのでしょうか

これは文字列の順序が上か下か同じかを判定しているものであると思います。

よって、数字とひらがなであっても比較できます。

“`
数字 < アルファベット(大) < アルファベット(小) < ひらがな

元記事を表示

【Flutter】検索機能の実装方法

## 初めに
この記事ではコンテンツを検索する際の簡単な検索機能を実装します。
検索機能はSNSなどをはじめ、様々なアプリに実装されており、自身で実装する機会もあるかと思います。ここでその実装方法を学習しましょう!

## 記事の対象者
+ アプリに検索機能を実装したい方
+ TextField の活用方法を学びたい方
+ Riverpod を用いた動的な機能の実装方法を学びたい方

## 完成イメージ
![search_example.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609901/fcf8b9c3-a31e-d037-c103-a5d258f2d7e0.gif)
上のように、検索している時としていない時で AppBar のアイコンや ListView の表示する項目を変更しています。
また、 ListView のタイルを押すと次のページへ遷移するようにしています。

## 全体コード
全体のコードは以下の通りです。

“`dart: search_page.dart
import

元記事を表示

NewsPicksっぽい遷移アニメーションの実装方法

このモーダル遷移アニメーションを実装してみました。
![Videotogif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662300/db256da5-343f-91f9-a624-b9b029f24737.gif)

作ったのがこれです。(ごちゃごちゃしてる方が動きが見えやすかったのでwebViewで表示してます。)
![Videotogif (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662300/996ce2d5-e9a7-8ec2-3607-503642224150.gif)

中身としてはCATransitonを使用して、
“`swift
func transitonAnimation() {
let transition = CATransition()
transition.duration = 0.4
transition.typ

元記事を表示

LazyVGridとかLazyVStackのカラムにアニメーションをつける時の注意点

## はじめに
最近はSwiftUIを触る機会が多いのですが、Table形式やCollection形式のViewを作るときは、Lazy〇〇を使うようにしています。
そんなこんなやっていた時に、LazyVGridをスクロールした時にバグが発生する問題に直面し、若干ハマったので解決方法を記事にしてみました。
ちなみにですが、iOS15のみ対応のアプリだと`warning`が出るので、このバグに直面することは少ないんじゃないかと思います!

## バグの正体
スクロールした時にセルの描画が遅れたような感じになってしまいます。
![バグ.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/580445/718783e7-5013-93f4-e4d1-72a0947a1960.gif)
この時のコードは下記です。
このViewでは、各Cellをタップした時に、青からオレンジに背景色を変えるところをアニメーションにしています。

“`swift
import SwiftUI

struct ContentView: V

元記事を表示

【Unity】顔だけVTuberになるARアプリを作った【実装編】

こんにちはっ?八ツ橋まろんです

iPhoneの顔認識の機能を使った **顔だけVTuberになるiPhoneアプリ『Virtual Face』を作りました**

この記事では、内部の動作と実装について書いていきます。

動作デモ↓↓

# 0. 初回起動時のチュートリアル

アプリを最初に起動したときに出てくる使い方画面。どんなアプリでも実装されていますが、Unityで開発するときは、PlayerPrefesを使うことで簡単に作成できました。

PlayerPrefesを使えば、int, float, stringの簡単な変数なら簡単に保存したり、呼び出したりできます。

“`csharp:
public GameObject tutorial;

// PlayerPrefesに”Tutorial”という名前でデータが保存されているか確認し、
//データ内容が1ならチュートリアルをスキップする
voi

元記事を表示

【Swift】アプリがバックグラウンドからフォアグラウンドに切り替わった事を検知する

# はじめに
フォアグラウンドになった事を判定することがあったので記事に残しておきます。

# 実装
“`swift
import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

NotificationCenter.default.addObserver(
self,
selector: #selector(foreground),
name: UIApplication.willEnterForegroundNotification,
object: nil
)

}

@objc func foreground() {
print(“フォアグラウンド”)
}
}
“`

# おわり
`NotificationCenter`を有効活

元記事を表示

iOSアプリリリース時、Guideline 4.3 – Designでリジェクト

# 概要
先日iOSアプリをリリースしようとした際、`Guideline 4.3 – Design`でリジェクトされたので、その時にやった事のまとめ。

# 大まかな流れ
AppStoreにアプリ提出(1回目)

`Guideline 4.3 – Design`でリジェクト

修正を加えて再提出(2回目)

`Guideline 4.3 – Design`でリジェクト

修正を加えて再提出(3回目)

`Guideline 4.3 – Design`でリジェクト

同じ機能セットを持つアプリはどれなのか質問

`Guideline 4.3 – Design`でリジェクトはされず(これとは関係ない他の箇所を指摘された)

指摘された箇所を修正し提出(4回目)

無事リリース

# リジェクト内容
Google翻訳したものを掲載。

“`
ガイドライン 4.3 – 設計

あなたのアプリは、App Store に提出された他のアプリと同じ機能セットを提供していることに気付きました。 内容や言語が異なるだけで、スパムの一種と見なされます。

このアプリの次回の提出には審

元記事を表示

コピペでFlutterサンプル その6

[前の記事 コピペでFlutterサンプル その5](https://qiita.com/netineti512/items/33655116850741105099)

[参考](https://docs.flutter.dev/cookbook/effects/parallax-scrolling)
“`sample.dart
import ‘package:flutter/material.dart’;
import ‘package:flutter/rendering.dart’;

const Color darkBlue = Color.fromARGB(255, 18, 32, 47);

void main() {
runApp(const MyApp());
}

class MyApp extends StatelessWidget {
const MyApp({super.key});

@override
Widget build(BuildContext context) {
return MaterialApp(
the

元記事を表示

コピペでFlutterサンプル その5

[前の記事 コピペでFlutterサンプル その4](https://qiita.com/netineti512/items/432f7b7856f452c886e9)

[参考](https://docs.flutter.dev/cookbook/effects/photo-filter-carousel)
“`sample.dart
import ‘dart:math’ as math;

import ‘package:flutter/material.dart’;
import ‘package:flutter/rendering.dart’ show ViewportOffset;

void main() {
runApp(
const MaterialApp(
home: ExampleInstagramFilterSelection(),
debugShowCheckedModeBanner: false,
),
);
}

@immutable
class ExampleInstagramFilterSelection

元記事を表示

Xcodeでのsimulator起動時に文字入力でキーボードが表示されない時の解決法

Xcode Version 13.4.1 (13F100)
Swift version 5.6.1

スクール学習でメモアプリを作成練習中、シミュレーターを起動してキーボードの表示非表示の切り替えをする機能を実装していたら、キーボードが表示されなかったので表示させるための対応をメモ。

状態

![キーボードが表示されない.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821821/c05d32d5-1511-2fd0-80cc-54edeb7d1b28.png)

iPhone画像の一番下にキーボード非表示ボタンの「Done」だけが表示されている状態。

やりたいこと

![スクリーンショット 2022-09-06 9.17.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821821/427a25de-c3ad-3a3f-4c9e-583e146dafe3.p

元記事を表示

【SwiftUI】Circleが動くアニメーションCustom TabBar

## はじめに
アニメーションを持つCustom TabBarをつくる
そのためには`GeometryReader`を利用する必要がある

## 環境
Xcode: 13.3.1

## Code

“`swift
enum TabIndex {
case home, cart, profile
}

struct customTabView: View {

@State var tabindex : TabIndex

func tabCirclePostion(tabIndex: TabIndex, geometry : GeometryProxy) -> CGFloat {
switch tabIndex{
case .home:
return -(geometry.size.width/3)
case .cart:
return 0
case .profile:
return geom

元記事を表示

【SwiftUI】Loading時のアニメーションを追加する

## はじめに
Loading時のアニメーションを追加する

## 環境
Xcode: 13.3.1

## Code
“`swift:LoadingView.swift
struct LoadingView: View {

@State var isLoading : Bool = false
var body: some View {
VStack{
Button {
Task{
isLoading = true
try await Task.sleep(nanoseconds: 5_000_000_000)
isLoading = false
}
} label: {
Group{
if isLoading {

元記事を表示

【SwiftUI】横スライド式画像ビュワーを作成する

# はじめに
インスタのような横スライド式の画像ビュワーを作っていきます。
![RPReplay_Final1662379581_AdobeExpress.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/a9d620cd-662d-9bbb-0cdd-3a936279501d.gif)

# 実装
“`swift:PhotosView
import SwiftUI

struct PhotosView: View {
private let width: CGFloat
private let height: CGFloat
private let content: () -> T

init(width: CGFloat, height: CGFloat, @ViewBuilder content: @escaping () -> T) {
self.width = width
self.height =

元記事を表示

Swift Playgrounds のアプリを Git で管理する

# 初めに

まず最初に **Xcode の Playground とは違います** のでmm
今回は **Swift Playgrounds** でアプリを開発する場合のお話です。

## Swift Playgrounds とは

2016年に登場した iPad 上で Swift を学習できるアプリです。

https://www.apple.com/jp/swift/playgrounds/

当初はテンプレートの教材を Swift で学習するだけでした。

現在はバージョンが`4.1`までリリースされており、iPad のみならず Mac 上でも動作し、**実際にリリースできるアプリが作成できる**までになりました。

## どんなことができるの?

iOSDC Japan 2022 で LT をします!

https://fortee.jp/iosdc-japan-2022/proposal/cc685572-46e9-483a-83b2-a1c839662dec

登壇後に資料をあげるので、見ていただけると少しは理解が深まるかと思いますmm

# Git での管理方法

元記事を表示

【Swift UI】旅行で使える割り勘アプリを自作!アプリ構造と流れ

Swift UIを使った「**iOSアプリ個人開発第2弾**」ということでリリースした「**割り勘アプリ**」の概要と作り方をまとめておきたいと思います。

:::note info
旅行で使える割り勘アプリ-bill-
:::

![536EC57E-CB00-49DF-B255-C4BDB9B67774.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2264957/c425ecca-511b-99dc-f687-624749eb8b4d.png)

◇この記事を読んで欲しい人
+ iOSアプリ開発の流れを知りたい
+ 個人開発ってどんな感じ?
+ Swift UIを使った開発の流れ

# アプリの概要
今回作っていきたいアプリは「**旅行の際に使える割り勘アプリ**」です。

具体的には…
+ 複数人の旅行
+ 1人がまとめて支払う
+ 何人かがバラバラに支払う
+ 旅費の割り勘がややこしいor面倒
+ 旅行の履歴を残しておきたい

これらを解決できるようなアプリを開発していきたいと思います

元記事を表示

【WebKit】WKNavigationDelegateについて

# はじめに

`WKWebView`の実装をする際に`WKNavigationDelegate`を使いましたが、色々できることがあるようなので、ドキュメントを読んでみました。

https://developer.apple.com/documentation/webkit/wknavigationdelegate

# 内容

“`swift
protocol WKNavigationDelegate
“`

ユーザがWebコンテンツを移動しようとすると、WebViewは`WKNavigationDelegate`と連携して、あらゆる遷移を管理する。例えば、コンテンツ内の特定のリンクからのナビゲーションを制限することができたり、リクエストの進行状況を追跡したり、エラーや認証に対応するために使用することもできます

### ナビゲーションリクエストの許可または拒否

#### [`webView(_:decidePolicyFor:preferences:decisionHandler:)`](https://developer.apple.com/documentation/w

元記事を表示

【SwiftUI】WheelDatePickerStyleが壊れてるから自作した

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

上記の記事では`Picker`でしたが、今回は`DatePicker`です。
`DatePicker`にもwheelスタイルが存在し、`Picker`と同様に壊れています。
使い物になる`DatePicker`をUIKitを使って作っていきます。

# 問題
“`swift
struct ContentView: View {
@State var date: Date = Date()
var body: some View {
DatePicker(“”, selection: $date, displayedComponents: .hourAndMinute)
.datePickerStyle(WheelDatePickerStyle())
.frame(width: 200, height: 80, alignment: .center)
.back

元記事を表示

VisionFrameworkを使ったiOSアプリケーション開発

# はじめに
大学時代に卒業研究の一環として作っていたiOSアプリケーションの開発の続きをしたくなったが、ソースが残っていなかった。
そこで、学習や記録もかねて1から開発しその過程を投稿していこうと思う。

# アプリ概要
視覚障碍者の触図を使った学習支援アプリであり、iPhone の背面カメラに映された触図上の手を認識し、触図上のどの地点を触
っているのかを音声で案内する。
![スクリーンショット 2022-09-03 024237.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821619/67ec6ee9-7ad0-a47c-33ec-3ce3cd2a0fe8.png)
### 触図とは
手や指で触って分かるようにした図。線、点、多角形などの図の構成要素を凹凸にすることや、異なる種類の素材を使用することによって、触って認識できるようにしたもの。点字書籍の図版や建物内の案内図などに利用される。

# 必要機能
1. 背面カメラから得られた画像をリアルタイムで画面に表示する
1. 手の認識
1. 触

元記事を表示

UnityプロジェクトにiOSのWidgetを載せる

環境
Unity 2020.3
Xcode 13.4および14 beta6

UnityからXcodeに書き出したプロジェクトにWidgetを載せる方法です。この先に進む前にUnityからSwiftを呼び出せるようにしておいてください。[Unity Swift 連携]などででてくるはずです。あと対象のプロジェクトがWidget無しでビルドに成功することを確認しておいてください。
Xcodeのメニュー、File > New > Target…からスクロールで下の方にあるWidget Extensionを選択、追加
ProjectがUnity-iPhoneになっているのを確認
![Product Name widgetnameのコピー.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117011/a6688ff5-c842-e081-7a35-bc1a7c3cd509.jpeg)

左カラムのUnity-iPhoneを選択してTARGETSのwidgetを選択して対象iosのバージョンをUnity-iP

元記事を表示

OTHERカテゴリの最新記事