iOS関連のことを調べてみた2019年11月24日

iOS関連のことを調べてみた2019年11月24日

iOS端末の機能を使ったり、状態を管理したりしたいときに読む記事がこちら!

最近クロス開発プラットフォームの実用性を検証していたのですが、その中で、iOSネイティブならではの機能ってクロス開発でどう実装するんだろう?そもそもどんなのがあったっけ?とふと思うことがありましたので、iOSネイティブならではのiOS端末と密接に関わる機能の実装サンプルをまとめてみました。

開発環境はXcode11.0、Swift5.0で、最小構成で実装しています。
正直この記事を見た方が早いな…と思った項目に関してはリンクを掲載させていただいています。どの記事もわかりやくまとまっていて、とても勉強になるものばかりです。

# 目次
– [カメラ・アルバム](#カメラアルバム)
– [位置情報](#位置情報)
– 住所
– 方角
– [端末イベント](#端末イベント)
– 監視
– 通知
– [ネットワーク](#ネットワーク)
– [センサー](#センサー)
– スクリーンの明るさ
– 音
– 加速度
– 角加速度
– シェイク
– 歩数
– [認証](#認証)
– 生体認証
– S

元記事を表示

【iOS】iOS13のUISearchBarの新機能を試してみる

iOS13では
`UISearchBar`に関連する下記のクラスが追加されました。

**UISearchTextField**
https://developer.apple.com/documentation/uikit/uisearchtextfield

**UISearchToken**
https://developer.apple.com/documentation/uikit/uisearchtoken

**UISearchTextFieldDelegate**
https://developer.apple.com/documentation/uikit/uisearchtextfielddelegate

色々調べてみたのですが
あまり情報が出てきませんでした。

WWDC2019のセッションでもサンプルコードを出すと言っていたのですが
現在まだ見つけることができていません。
もし正式な情報の場所などご存知の方いらっしゃれば教えてください??‍♂️

WWDC2019のセッション動画
https://developer.apple.com/videos/play

元記事を表示

【Swift】OpenAPIGeneratorにPRを出してみる

いくつかのiOSアプリ案件でOpenAPIGeneratorを使ってswift4のAPIクライアントを自動生成しているのですが、とても快適です。

利用状況はこんな感じ

– OpenAPIClientで生成したファイルは、〇〇(プロジェクト名)APIClientとしてプロジェクト本体のレポジトリとは別のレポジトリとして管理
– SwiftPackageManagerに対応させて、SPM経由でプロジェクトからimportできるように
– `update.sh` というシェルを○○APIClientディレクトリのルートにおいて、実行してタグ更新するだけでAPIの更新が出来るようにし、人依存を撤廃
– いくつか都合が悪いところは、static var の部分を修正して、カスタマイズして対応。(BuilderFactoryを丸ごと切り替えられるようになっているので、最終的に全部カスタマイズ可能な作りになっていてとても便利です)

別レポジトリに切り出したのは、APIClientはプロジェクトの内部構造に依存せず独立運用可能なので、切り離して運用する事でプロジェクトレポジトリの複雑度をむやみに

元記事を表示

#16 iOS13以降の画面遷移で前の画面に戻れてしまう問題の解決方法1例

#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.

#環境
Xcode:11.2.1
Swift:5.1.2
2019/11

##part1
画面の遷移先の`View Controller`を選択している状態で,`Attributes inspector`の`Presentation`を`Full Screen`に変更する.

スクリーンショット 2019-11-24 午前0.39.36.png

元記事を表示

#15 TabBarItemをカスタマイズする1例

#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.

#環境
Xcode:11.2.1
Swift:5.1.2
2019/11

##part1
`Tab Bar Item`を選択する.

スクリーンショット 2019-11-24 午前0.07.24.png

##part2
`Attributes inspector`の`Title`を任意の文字列にし,`Image`を任意のものを選ぶ.

スクリーンショット 2019-11-24 午前0.13.36.pngVIPERでTabBarControllerを実装する

VIPERでTabBarControllerの実装をしてみたので記事にまとめました。

VIPERそのものに関しては当記事では割愛させていただきます。
VIPERってそもそもなんぞや?という方は以下の記事が非常に分かりやすいのでおすすめです!
https://qiita.com/hicka04/items/09534b5daffec33b2bec
https://qiita.com/hirothings/items/8ce3ca69efca03bbef88

# 流れ

今回はアプリ起動時に開く画面をTabBarControllerで実装する想定です。
HomeTabBarController,HomeTabBarRouter,HomeTabAssemblyという3つのファイルを使って作成します。

今回使用するサンプルコードは下記になります。
https://github.com/Shoryu0831/VIPER-TabBarController

# HomeTabBarController

まずはじめにHomeTabBarControllerから作ります。
今回使う予定のタ

元記事を表示

iOSのダークモードでアイコンの色が反転しない!

Assets内のアイコンのプロパティで「Render As」を「Template Image」に設定すると、モードに合わせてアイコンの色を変えて描画してくれるようになります。

![Screen Shot 2019-11-23 at 22.17.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50780/fcf59b9f-dada-07fc-cd59-4daa5d8a1240.png)

通常モード

![Simulator Screen Shot – iPhone 11 Pro Max – 2019-11-23 at 22.29.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50780/8a90b625-173e-fe0b-72a3-73d38ef7bbd5.png)

ダークモード

![Simulator Screen Shot – iPhone 11 Pro Max – 2019-11-23 at 22

元記事を表示

#14 NavigationBarをカスタマイズする1例

#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.

#環境
Xcode:11.2.1
Swift:5.1.2
2019/11

##part1
Xcodeで`Navigation Item`と検索する.

スクリーンショット 2019-11-23 午後6.54.43.png

##part2
それを`Navigation Controller`を設定した`View Controller`へドラッグ・ドロップする.

スクリーンショット 2019-11-23 午後6.55.25.pngFlutterで環境構築からHelloWorld & スプラッシュまでやってみた。【環境構築編】

# 概要
自己学習で、Flutterを触ってみました。
サンプルアプリ&スプラッシュ起動までの環境構築手順となります。

# Flutter is何?
>Flutter は Google 社が開発しているオープンソースのアプリケーションフレームワークです。
クロスプラットフォームに対応しており、ワンソースで複数のプラットフォーム(iOS、Android、Web、Windows、Mac、Linux)に対応したアプリケーションを開発することができます。
また、マテリアルデザインによる美しい UI を利用することができます。

だそうです。
逆にオリジナリティー溢れるデザインは適応しずらいって事ですかね。

そのほかにFlutterは以下の特徴があります。
– Dart 言語 による開発
– ホットリロード(記述したコードをリアルタイムに反映)
– 高速な動作

# 環境
– macOS Catalina version 10.15.1
– Flutter v1.9.1+hotfix.6 // Stable版
– Android Studio 3.5.2 for Mac
– Android

元記事を表示

#13 iSOアプリのCellを選択不可にする1例

#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.

#環境
Xcode:11.2.1
Swift:5.1.2
2019/11

##part1
`Table View`を選択した状態で.`Attributes inspector`の`Selection`を`No Selection`にする.

スクリーンショット 2019-11-23 午後6.24.25.png

スクリーンショット 2019-11-23 午後6.24.54.pngまだPythonista3使ってないの?ー基本操作・StaShインストール編ー

pythonista3は少し前に世間を騒がせた超最強のpython神アプリでiOSで使用することができます。

スマホでpythonのコードを全て書いて実行できるので、自分だけしか使わない便利なアプリやゲームを作ったり出来ます。

使った人にしかわからないのが辛いくらい神アプリ!

今回はその神アプリの基本的な使い方について説明します。

# Pythonista3をインストールする

pythonista3のインストールは[こちら](https://itunes.apple.com/jp/app/pythonista-3/id1085978097?mt=8)からできます。

# StaShをインストールする

StaShは、Pythonista3の中で使用できるシェルで`cd`とか`ls`とか基本的なシェルコマンドはほとんど使えます!

pythonのライブラリをインストールするのにもとても便利なので、Pythonista3を使う人には必須です!

## **1.Pythonista3を開く**

## **2.一旦自分の開発用のフォルダを作る(任意)**

– 「New File」

元記事を表示

台風が多かったのでSwiftUIで気圧計を作る

この記事は、自分の過去記事の[「台風が来るのでiPhone6で気圧計を作る」](https://qiita.com/bellx2/items/fc1de7197f583001ca59)のアップデート版です。元記事を書いてから5年、今年の台風シーズンも終わりましたが今でも時々ブックマークやいいねがつくので、iOS13のSwiftUIで書き直してみました。今回は台風は特に意味はありませんが、続編という事で…。

SwiftUIの動作サンプルとして、前のコードの基本部分はそのままにしました(汗、

![IMG_0045.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14768/b95863f4-4e3b-e5c2-7e60-07a27d36b830.png)

SwiftUIで描いたら何もしなくてもダークモード対応になりました♪

# 環境

Xcode 11.2.1
iOS13.1.3 (iPhoneX)

# コード

とりあえず使ってみたい人は以下に公開しています。実機への転送が必要です。

htt

元記事を表示

チュートリアルから一歩踏み出したSwiftUIのカスタムAnimationの作り方ーその1(AnimaionModifier編)

#はじめに
今回はカスタムアニメーションションの作り方を書きたいと思います。
[前回ViewModifierを使った付箋](https://qiita.com/takaf51/items/8fc8834b2fe03848222e)を作りましたが、今回はその付箋部分をアニメーションさせたいと思います。
アニメーション部分に特化するため、形状は角丸のないシンプルなものを土台にします。

![ezgif.com-video-to-gif-3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24726/74abe866-6b5e-67bd-d1bf-e247860dad59.gif)

#カスタムアニメーション実装の手順
今回のアニメーションで変更させなければならない値をまずみてみましょう。

“`swift:PartOfViewModifier.swift
struct StickyNoteModifier: ViewModifier {
var ceaseSize: CGFloat

元記事を表示

AVCaptureMultiCamSession で取得したカメラの映像をMetalで合成&表示する

iOS13で複数カメラの映像を同時に扱えるようになりました。
[AVCaptureMultiCamSession – AVFoundation | Apple Developer Documentation](https://developer.apple.com/documentation/avfoundation/avcapturemulticamsession?language=objc)
これができると、例えば車載とか街歩き系の配信で風景と一緒にワイプも載っけたりできて面白そうですね。

ということでAppleのサンプルを参考に自分でも触ってみました。
[AVMultiCamPiP: Capturing from Multiple Cameras](https://developer.apple.com/documentation/avfoundation/cameras_and_media_capture/avmulticampip_capturing_from_multiple_cameras)

今回作ったサンプルの処理概要は以下のようになります。

1. `AVCapt

元記事を表示

iOSのバージョンと Safariバージョンの対応表(2019/11/22現在

iOSバージョンとSafariバージョンの対応表をググったんですが見つけられなかったので調べてみました。
※ 確認には手元の実機とシミュレータを使いました。

## 対応表

|iOS Version | Safari Version | Webkit Version |
|—|—|—|
| iOS13.2.2 | 13.0.3 | 605.1.15 |
| iOS13.1.2 | 13.0.1 | 605.1.15 |
| iOS13.1 | 13.0.1 | 605.1.15 |
| iOS13.0 | 13.0 | 605.1.15 |
| iOS12.4.1 | 12.1.2 | 605.1.15 |
| iOS12.4 | 12.1.2 | 605.1.15 |
| iOS12.2 | 12.1 | 605.1.15 |
| iOS12.1 | 12.0 | 605.1.15 |
| iOS12.0 | 12.0 | 605.1.15 |
| iOS11.4.1 | 11.0 | 605.1.15 |
| iOS11.4 | 11.0 | 605.1.15

元記事を表示

【iOS13】モーダルをスワイプで閉じないようにする

# `modalPresentationStyle = .pageSheet` で表示されたモーダルをスワイプで閉じないようにする

[公式のサンプル](https://developer.apple.com/documentation/uikit/view_controllers/disabling_pulling_down_a_sheet)があるのだが、イマイチ読みづらい…ような気がした:frowning2:
特に、`presentationController.delegate`への受け渡しが遷移元に書いてあるので、見落としてしまう。
PageSheetDismiss_1.png

## Storyboard
PageSheetDismiss.png

元記事を表示

SwiftGenをCocoaPodsで入れてみたよ

SwiftGenをprojectに導入してみたので, 備忘録がてら書き残しておきます.
※SwiftGenはHomebrewを用いて導入することもできますが, 今回はCocoaPodsの場合のみです.
サンプルコードはこちら -> [SwiftGenPractice](https://github.com/tihimsm/SwiftGenPractice)
SwiftGen本家リポジトリはこちら -> SwiftGen(https://github.com/SwiftGen/SwiftGen)

# 目次
1. CocoaPodsでSwiftGenをinstall
2. swiftgen.ymlを用意
3. BuildPhasesにSwiftGenに関する記述を追加

最終的に↓の画像のような構成になる前提で読んでいただけると.
![スクリーンショット 2019-11-22 14.42.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142392/b1ca84af-66db-e31e-3ebb-bd

元記事を表示

[iOS13]SceneDelegateでURL Schemeのリクエストを受取る

## 概要

URL Schemeで他アプリと連携して、callbackで自分のアプリに戻ってくる処理を実装しています。
iOS12までは`AppDelegate`の下記メソッドでリクエストを受け取っていましたが、iOS13で受け取れなくなっていました。

`func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool`

> [iOS13 application openUrl? |Apple Developer Forums](https://forums.developer.apple.com/thread/124132)

「`SceneDelegate`を代わりに使用する」ということはすぐわかったのですが、
まだSceneDelegateを導入していなかったこともあり少々手こずりました…
内容としてはあまり多くないですが備忘録としてまとめます。

## 環境

* iOS 13.2.3
* Xcode

元記事を表示

Appleにバグレポートを送った時の手順

iOS13で[CNCopyCurrentNetworkInfo()がNULLを返す時がある](https://forums.developer.apple.com/message/385189)現象が自分のところでも再現したので、Appleにバグレポートを送りました。
その時の手順まとめ。

## `sysdiagnose`でログを取得する
基本、[Bug Reporting – Profiles and Logs](https://developer.apple.com/bug-reporting/profiles-and-logs/)にある手順書通りに作業するだけ。

## プロファイルのインストール
[Bug Reporting – Profiles and Logs](https://developer.apple.com/bug-reporting/profiles-and-logs/)から、目的に応じたプロファイルを選択してiPhoneにインストールします。

今回はWi-Fi関連の障害なので、`Wi-Fi for iOS`のプロファイルをインストールしましょう。

##

元記事を表示

iPadOSにおけるUser-Agent

iPadOSが13から登場し、その影響でiPadにおけるUser-Agentの仕様が変わったことが話題になりました。
その中で、気になることがあったので検証してみました。

使ったのは[ウィルラボのUserAgent確認ツール](http://lab.risewill.co.jp/tools/web-tools/user-agent)です。

# 通常

スクリーンショット
7A266C42-E33D-40E4-BF71-31794EEE8EC9.png

`Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like

元記事を表示

OTHERカテゴリの最新記事