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

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

【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 routeDeviceSetupConne

元記事を表示

コピペで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 ExampleCupertinoDownloadBu

元記事を表示

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,

元記事を表示

コピペでFlutter その2

[前の記事 コピペでFlutter その1](https://qiita.com/netineti512/items/583bfdfb6b141894679f)

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

void main() => runApp(const MyApp());

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

@override
Widget build(BuildContext context) {
const appTitle = ‘Opacity Demo’;
return const MaterialApp(
title: appTitle,
home: MyHomePage(title: appTitle),
)

元記事を表示

コピペでFlutter その1

mainの雛形をコピぺで変更するだけで実行できると思います。

雛形
“`main.dart
import ‘package:flutter/material.dart’;

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

class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);

// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: ‘Flutter Demo’,
theme: ThemeData(
// This is the theme of your application.
//
// Try running your application with “

元記事を表示

Unity 研究期間の成果

# はじめに
研究期間(実装したことないものを実装する期間)中に実装したものについて、実装方法や参考資料を本記事にまとめました。
他に面白そうな実装物などあれば、是非コメント下さい!

# 目次
1.AdMob起動時広告の実装
2.Google Play In-App Review APIの実装

# 1.AdMob起動時広告の実装
①下記サイトから “GoogleMobileAds-v7.1.0.unitypackage” をダウンロードする
※v7.2.0は未確認

https://github.com/googleads/googleads-mobile-unity/releases/tag/v7.1.0

②Unityのプロジェクト内に①でダウンロードした “GoogleMobileAds-v7.1.0.unitypackage” をインポートする

③下記サイトから “MainScene.cs” と “AppOpenAdManager.cs” をダウンロードする

https://github.com/googlecodelabs/admob-appopen-unity/tr

元記事を表示

UnityでUIをスマホ画面準拠にする方法

備忘録

## Canvasオブジェクト作成
1. ヒエラルキーで右クリック
1. UI→好きなUIを選択

![スクリーンショット 2022-09-03 17.49.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1135021/3593bce6-11e8-a587-4b1f-ee535389b72a.png)

## 画面をスマホサイズに設定
1. ゲームタブを選択
1. Free Aspectを好きな端末の比率に変更

![スクリーンショット 2022-09-03 17.51.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1135021/62fa0e07-8cb9-bb73-e8d2-327835ffb952.png)

元記事を表示

UISearchBarで初期表示時にキー入力(フォーカス)状態にする

# 1.はじめに
仕事で、UISearchBarで初期描画時にフォーカスを当てた状態で表示する必要がある場面がありました。
一行追加するだけでフォーカス状態にできるようですので共有したいと思います。

# 2. UISearchBarでのフォーカスについて
UISearchBarの初期フォーカスについては、
UIResponderのbecomeFirstResponderを使ってフォーカス状態にできるようです。
UIResponderクラスは画面タッチやデバイスのモーションなどのイベントを管理するクラスです。イベントには、タッチイベント、モーションイベント、リモコンイベント、プレスイベントなど、いくつかの種類があります。

becomeFirstResponderの説明に戻りますが、
[Apple Developper – becomeFirstResponder()](https://developer.apple.com/documentation/uikit/uiresponder/1621113-becomefirstresponder)には下記のように説明書きが載っています。

元記事を表示

VMwareを使い、WindowsでmacOS環境を構築する(VMwareインストールまで)

# はじめに
大学時代に支給されたMacBookでiPhoneアプリを作っていたが、卒業し回収されてしまった。
Windowsしか持っていないが、またアプリを作りたくなったため、その開発環境を作っていこうと思う。
~PCスペック~
プロセッサ Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz 3.60 GHz
実装 RAM 16.0 GB
エディション Windows 11 Home

# VMwareのダウンロード
![ダウンロード1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821619/9bfd0129-a0ed-640e-4819-0893ff2a127c.png)
VMWareの公式サイト([https://www.vmware.com/jp/products/workstation-player.html]())
無償でダウンロードすることができる。

![ダウンロード2.png](https://qiita-image-store.s3.ap-no

元記事を表示

モバイルエンジニアが内定者としてインターンシップにフロントエンドで参加した話(ざっくりまとめ)

#### 本記事は、「モバイルエンジニアが内定者としてインターンシップにフロントエンドで参加した際の話」をざっくりまとめたものです。
もしかしたら、この話の各テーマごとに深掘りした記事を今後出すかもしれないです

# 自己紹介

自動車産業が有名な県で専門学生をしている20歳男性です。
高校の頃に独学でプログラミングを始め、専門学校に進学。
来年の4月にはビジネスチャットを提供している企業に、モバイルエンジニアとして新卒入社する予定です。

半年ほど前まではFlutterを書いていましたが、最近では入社に向けてSwiftを書いていています。

今回は、入社予定の企業のインターンシップに内定者として参加させていただいたので、その経験や感想をまとめていこうと思います。

# インターンの内容

インターンの期間:3週間
– #### 講義パート :1週間
– __環境構築__ から __デザイン__ , __React__ , __型システム__ , __要件定義__ , __ドメイン駆動設計__ , __運用__ , __アジャイル・スクラム__ …などなど様々な講義を受

元記事を表示

【AdMob】ネイティブ広告で画像広告だけ表示する

# はじめに
ネイティブ広告には画像広告と動画広告があります。
動画広告は重いのでスクロールがカクついたりします。
ですので、画像広告だけを表示したいと思い、
AdMobの実装関係のドキュメントを一生懸命読んでました。

なかなか見つからないのでないのか。。。と諦めかけた所、マイページで設定ができたので紹介します。

# 設定方法
1, ハンバーガーメニューを開きます。
2, 「広告ユニット」を選択します。
![スクリーンショット 2022-09-03 0.25.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/89f6f1a1-5776-eef4-c0ef-f24d72047031.png)

3, 該当の広告ユニットを選択します。
![スクリーンショット 2022-09-03 0.26.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/c7d57517-bd9c-df79-3be3

元記事を表示

アプリに撮影機能を実装した時の注意点

# はじめに
アプリに撮影機能を実装した際に挙動がおかしな点が見つかったので備忘録として記事にしました。
# 問題
音量ボタンでシャッターを切る実装をした際に、撮影画面でホーム画面に戻る、または画面ロックすると再度撮影画面に復帰した際に音量ボタンで撮影できなくなってしまいました。
# 原因
https://developer.apple.com/documentation/avfaudio/avaudiosession/1616596-interruptionnotification

上記ドキュメントのNoteにこう書かれていました。
> Starting in iOS 10, the system deactivates an app’s audio session when it suspends the app process.

日本語に翻訳すると、
> iOS 10から、アプリのプロセスを中断する際に、アプリのオーディオセッションを非アクティブにするようになりました。

つまり、音量ボタンで撮影するためにアクティブにした[AudioSession](https://dev

元記事を表示

【SwiftUI】影を特定のViewだけに付与する

# はじめに
SwiftUIを使っていてこれどうやるんだ?と思った事があったので記事にします。

# 現在のコード
“`swift
struct ContentView: View {
var body: some View {
Text(“影のテストです”)
.frame(width: 200, height: 80)
.background(Color.yellow)
.shadow(color: .black, radius: 3, x: -5, y: -5)
}
}
“`

# 問題
背景の黄色だけに影を付けたいのにTextにも影が付く
![スクリーンショット 2022-09-02 22.19.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/7a0fe59d-1bd2-15c4-66a2-c9b50df4eede.png)

# 解決方法
`shadow`の前に`com

元記事を表示

【SwiftUI】アプリ内でWebサイトを表示する方法

## はじめに
アプリ内でWebページを見せる

## 環境
Xcode 13.3.1

## Code

“`swift: MainView
struct MainView: View {
var body: some View {
NavigationView{
VStack(spacing: 30){
NavigationLink(destination:
WebView(urlToLoad: “https://www.google.com”)) {
Text(“Google”)
.foregroundColor(Color.white)
.padding()
.background(Color.blue)

元記事を表示

【SwiftUI】自動スクロール機能を持つCustom TabView

## はじめに
基本的なTabViewではTabViewの活用に限界がある。

TabItemをカスタマイズし、一回タップで最初のページに戻り、2回目でスクロールを一番上に戻す機能を加える。

## 環境
Xcode 13.3.1

## Code

“`swift: MainTabView
struct MainTabView: View {

@EnvironmentObject var value : ValuesModel

@State var showNextPage = false

init(){
UITabBar.appearance().isHidden = true
}

@State var countForScroll = 0
@State var currentTab = “house”

var body: some View {
VStack {
TabView(selection: $curr

元記事を表示

OTHERカテゴリの最新記事