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

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

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

元記事を表示

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

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

[参考](https://docs.flutter.dev/cookbook/effects/nested-nav)
“`sample1.dart
import ‘package:flutter/material.dart’;

const routeHome = ‘/’;
const routeSettings = ‘/settings’;
const routePrefixDeviceSetup = ‘/setup/’;
const routeDeviceSetupStart = ‘/setup/$routeDeviceSetupStartPage’;
const routeDeviceSetupStartPage = ‘find_devices’;
const routeDeviceSetupSelectDevicePage = ‘select_device’;
const routeDeviceSetupC

元記事を表示

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

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

[参考](https://docs.flutter.dev/cookbook/effects/download-button)
“`sample1.dart
import ‘package:flutter/cupertino.dart’;
import ‘package:flutter/material.dart’;

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

@immutable
class ExampleCupertinoDownloadButton extends StatefulWidget {
const ExampleCupertinoDownlo

元記事を表示

RxSwift の subscribe 内の処理を共通化する

# はじめに
あまり発生しないケースかもしれないですが、 RxSwift の subscribe 内の処理を共通化したいと思ったことはないでしょうか。例えば、 API 通信でエラーが発生したらダイアログを出す処理や Firebase Crashlytics にエラー情報を送信する処理などです。その共通化の方法を実装する機会がありましたので、備忘録として残します。

# 実装

## Observable の場合
共通処理を置いておく独自 Observer を用意します。そして、 subscribe の引数にその observer を入れるだけです。

“`swift:SampleObserver.swift
import RxSwift

class SampleObserver {
let onNext: ((T) -> Void)?
let onError: ((Error) -> Void)?
let onCompleted: (() -> Void)?

init(onNext: ((T) -> Void)? = nil,

元記事を表示

OTHERカテゴリの最新記事