iOS関連のことを調べてみた2020年06月15日

iOS関連のことを調べてみた2020年06月15日
目次

Google AdMobからヤバそうな内容のメールが届いたから対応した件

# はじめに

私は個人のiOSアプリに [Google AdMob](https://admob.google.com/intl/ja/home/) でアプリ内広告を導入することで広告収益を得ているのですが、3週間ぐらい前に突然、以下の画像の内容のメールが送られてきました。

– **app-ads.txt ファイルのないアプリは、広告掲載の対象外になっていく可能性があります**
– **一部の代理店や購入者はすでに app-ads.txt ファイルのないアプリへの広告掲載を停止しており、今後この動きは他の広告主にも広がることが予想されます。**

いやいやいやいや!それは困

元記事を表示

iOSのカメラから深度を取得して保存すること関連メモ

深度データが視差になってる場合?
PhotoshopのHEICファイル深度データとは異なるAVDepthDataからの深度マップ
https://ja.stackoverflow.com/questions/23972/coreimage%E3%81%A7%E3%82%A8%E3%83%95%E3%82%A7%E3%82%AF%E3%83%88%E3%81%97%E3%81%9F%E7%94%BB%E5%83%8F%E3%81%8Cuiactivityviewcontroller%E3%81%A7%E7%94%BB%E5%83%8F%E4%BF%9D%E5%AD%98%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84

UIImageをカメラロールに保存する
[iPhone] AVCaptureVideoDataOutput ビデオで静止画撮影する

[iPhone] AVCaptureVideoDataOutput ビデオで静止画撮影する

深度データが保存できなかった
CoreImageでエフェクトした画像がUIActivityViewCon

元記事を表示

【Flutter】Flutter × Firebase Firestore で単語帳アプリを作成

## 完成イメージ

[githubはこちら](https://github.com/Tetsukick/TANGO)

完成イメージ

## 作業手順
1. firebaseをアプリに追加
2. firestoreを設定
3. ソースコード書き書き(Firestoreデータの読み取り)

## firebaseをflutterアプリに設定
こちらに関しては公式のほうが丁寧に説明されておりますので以下のGoogle公式サイトを参照してください。
[Flutter アプリに Firebase を追加する](https://firebase.google.com/docs/flutter/setup?hl=ja)

## firestoreを設定

### Firestore プラグインの追加

“`pubspec.

元記事を表示

【iOS, Swift】画像リサイズ処理の速度

iOSDC 2019 発表資料 の下記にて画像リサイズの処理速度の検証が書かれていたので、自分でも検証してみました。
ただそれだけです。

[画像処理におけるUIImageとCGImageとCIImageの効果的な使い分け](https://speakerdeck.com/kotetuco/uiimage-and-ciimage-for-image-processing)

## 処理速度計測の準備

“`swift
func measure (_ f: @autoclosure () -> T) -> (result: T, duration: String) {
let startTime = CFAbsoluteTimeGetCurrent()
let result = f()
let timeElapsed = CFAbsoluteTimeGetCurrent() – startTime
return (result, “経過時間は \(timeElapsed) 秒です”)
}
“`

## 対象画像

1920 × 1280

元記事を表示

自作したライブラリのDemoプロジェクトが実機でビルドできない件

タイトルの通り、iOSのライブラリを自作したがDemoプロジェクトがシュミレータではビルドできるが実機ではビルドできなかった。
構成はこんな感じ

スクリーンショット 2020-06-14 23.13.53.png

## 原因
frameworkがシュミレータしか対応しておらず、Build PhasesのCopy File phaseからframeworkを実機用にコピーする必要があった。(正直あんまわかってない)

## 対応
Demoの`Build Phases`から`Copy File phase`を選択。
スクリーンショット_2020-06-14_23_20_10.png【Swift】UITableViewとUITableViewControllerは何が違うのか

掲題についてふと疑問に思いTwitterで呟いたら素敵な回答を頂けたので、こちらにまとめした。

## UITableViewとUITableViewControllerについて
#### 構造の違い
もちろん`View`と`ViewController`がそれぞれの親になっています。

| UITableView | UITableViewController |
|:—————-:|:—————–:|
| ||

## UI

元記事を表示

【Flutter】Text 長い文字列に対応する

## 事象
文字が長いと以下のようにエラーが出てしまいます。

“`
A RenderFlex overflowed by 1312 pixels on the right.
“`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261934/fd0bdead-05b7-7d64-cb50-ea5c15f5799d.png)

Swiftなどだと、
UILabelの`truncate`パラメータ等で調整します。

## 解決方法

Textの`Overflow`パラメータを使用する。

“`dart:修正前

Text(categoryName,
style: TextStyle(
fontFamily: ‘SFProDisplay’,

元記事を表示

こんなソースコードはイヤだ-main関数はスッキリと

プログラムのソースコードのより良い書き方をまとめていこうと思います。

# main関数はスッキリと

“`sample.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// 戻るボタンを設定
UINavigationBar.appearance().backIndicatorImage = UIImage(named: “button_navi_back_gray”)?.withRenderingMode(UIImage.RenderingMode.alwaysOriginal)
UINavigationBar.appearance().backIndicatorTransitionMaskImage = UIImage(named: “button_navi_back_gray”)?.withRenderin

元記事を表示

Flutterでテキストの一部を簡単に装飾できるパッケージを作成した

# はじめに

こんにちは.AndroidとiOSの両アプリを同じコードで作れるFlutterに惹かれて,ここ1ヶ月くらい色々触ってみました.
レイアウトもDartファイル内に記述できてめちゃくちゃ書きやすいですが,気になる点もいくつかありました.特に不便に感じたのが,以下のようなテキストの一部を装飾することです.

– テキスト内のURLやメールをリンクにする
– テキストの一部をタップした時になにか動作させる(画面遷移させるとか)
– テキストの一部のスタイルを変える(色とか)

Flutterでは,これらのようなテキストの一部に変化をもたせたい場合は,以下のような感じで[RichText](https://api.flutter.dev/flutter/widgets/RichText-class.html)と[InlineSpan](https://api.flutter.dev/flutter/painting/InlineSpan-class.html)で書いていく必要があります.

“` dart
RichText(
text: TextSpan(
text

元記事を表示

iOSエンジニアが読んだら、ためになりそうな本

# はじめに

Web系のおすすめ本は結構見つかるのですが、 `iOSエンジニア` という枠ではあまり見かけなかったので、思いつくままにリストアップしてみました。他にも良い本がたくさんあると思いますが、まずは個人的に(あるいは世間の評価が高い)おすすめのものをあげてみます。

このリストはビギナー向けではありません。すでにiOSエンジニアと呼ばれている方を対象にしています。(別に読んじゃダメといっているわけではないので悪しからず)

ざっくり`アソシエート`と`プロフェッショナル`に分類はしています。定義はあいまいです。`アソシエート`側を先に読んだ方が良いかな、程度に思ってください。

表中で `↑は同じ分類`を`←は同じくためになりそう`を示しています。

# 読んだら、ためになりそうな本

||アソシエート|プロフェショナル|
|—|—|—|
|基礎|[プログラムはなぜ動くのか](https://www.amazon.co.jp/dp/B00HRN7VK0)||
|↑|[コンピュータはなぜ動くのか](https://www.amazon.co.jp/dp/B00GSH

元記事を表示

SwiftUIのキャンバス(プレビュー)を消してしまった時は

# SwiftUIのキャンバス(プレビュー)を消してしまった時は
コードが表示されるウィンドウを広くしたらプレビューがどこかに行ってしましった…そんな時は、
![IMG_0255.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156708/d84649df-0782-3fd8-16e8-fcc584ce0298.jpeg)

Xcodeメニューバー > Editor > Canvas
スクリーンショット 2020-06-14 10.11.08.png

か、

Xcode > editor area > editor options > Canvas
スクリーンショット 2020-</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>iOS</div>
<div class='tag-cloud-link'>Swift</div>
<div class='tag-cloud-link'>SwiftUI</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/MieSekikawa/items/dfbe0d6640a84ce313a9'>元記事を表示</a></div>
<h3 id=iOSでFirebaseを環境ごとにプロジェクトを分ける方法

iOSの場合、開発環境と本番環境を分ける場合、Firebaseのプロジェクトを分けるのが手っ取り早く行える方法だと思います。

##対象
Firebaseを導入したいiOSエンジニア

##前提
開発と本番でTARGETが分かれている
TARGETを複数作る方法は[こちら](https://qiita.com/alt_yamamoto/items/c3b78b24d0ff5ddc93f9)から
##手順
1. Firebaseにて2つプロジェクトを作成(開発用と本番用)
2. 「GoogleService-info.plist」ファイルをダウンロードする(開発用プロジェクトと本番用プロジェクト)
3. 「GoogleService-info.plist」ファイルの名称変更
4. Xcodeプロジェクトに名称変更した「GoogleService-info.plist」ファイルを設置
5. Xcode内で、ShellScript作成
6. 開発、本番で読み込む「GoogleService-info.plist」ファイルを変える

##Firebaseにて2つプロジェクトを作成とダウンロード

元記事を表示

Swiftのライブラリ「Expression」をインストールしようとしたら「No such file or directory – getcwd (Errno::ENOENT)」が出た

これをやってた時の話。
[Swift実践入門 〜 今からはじめるiOSアプリ開発! 基本文法を押さえて、簡単な電卓を作ってみよう](https://employment.en-japan.com/engineerhub/entry/2017/05/25/110000#2-Expression%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)

# 表示されたエラー文
“`
Traceback (most recent call last):
6: from :2:in `
5: from :2:in `require’
4: from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems.rb:9:in `
3: from

元記事を表示

[Swift]オシャレなNavigationBar(色・フォント・アイテムのアレンジ)の作成(画面ごとに設定)

本記事では、**オシャレなNavigationBar**の作成の仕方(色・フォント・アイテムのアレンジの仕方)を紹介します!
とても簡単に実装可能なのでぜひ試してみてください!

# Before
![スクリーンショット 2020-06-13 20.23.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588214/64805fba-377d-07a7-9a71-b8c580a49a72.png)

# After
![スクリーンショット 2020-06-13 21.38.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588214/1f16848d-550a-3d1f-b133-03afaeed2556.png)

上記のように、NavigationBarをアレンジするだけでオシャレになりましたね!
※ 本記事では、画面ごとにNavigationBarをアレンジしていますが、全体を同じデザインでアレンジしたい場

元記事を表示

iOSでWebページの一部要素のみスクロール可能にする

##背景
– (参考)[iOS でページ全体はスクロールを無効にし、個別の要素(textarea など)では有効にする方法](https://qiita.com/noraworld/items/2834f2e6f064e6f6d41a)

> PC や Android など、iOS 以外のデバイスで、ページ全体をスクロール無効にし、それ以外の要素は有効にしたい場合は、以下の CSS を追加すれば良いです。
(中略)
しかし、iOS では、この方法だとうまくいきません。

##実現したいこと
ページ全体をスクロール禁止にした上で、スクロール可能な要素についてのみ内部の(子要素を含む)どこをタッチしてもスクロールする。
overflow:scrollに設定されていても子要素が少なくスクロール可能状態になっていない要素や、スクロール可能状態だが一番下までスクロールされきっている要素はきちんとpreventDefaultしないと上位要素をスクロールしようとしてしまうことに注意する。
(諸事情によりwindowやbodyではなく、自分で作成した一番上位の要素をrootElementとして、これに

元記事を表示

[Swift]オシャレなNavigationBar(色・フォント・アイテムのアレンジ)の作成

本記事では、**オシャレなNavigationBar**の作成の仕方(**色・フォント・アイテム**のアレンジの仕方)を紹介します!
とても簡単に実装可能なのでぜひ試してみてください!

# Before
![スクリーンショット 2020-06-13 20.23.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588214/cdc9b800-eac7-9299-aac2-a631a678624b.png)

# After
![スクリーンショット 2020-06-13 20.25.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588214/cee1bd66-3f02-30a1-75bb-7f94f301d4af.png)

上記のように、NavigationBarをアレンジするだけでオシャレになりましたね!

では、下記のように実装していきましょう!

# 1. Main.storyboardの準備
まず、Ma

元記事を表示

不要なコードを見つけるPeripheryを実行するターゲットをXcodeGenで追加する

プロジェクトの不要なコードを見つけてくれるPeripheryというツールがあります。

https://github.com/peripheryapp/periphery

このREADMEを読んでみると、Periphery用のターゲットを作って利用する方法が書いてあって面白そうだったのでXcodegenで生成するためのyamlを書いて見ました。

“`project.yml
aggregateTargets:
Periphery:
buildScripts:
– script: periphery scan –project vear.xcodeproj –schemes App –targets App –format xcode
“`

Xcode11から追加されたAggregate Targetsというターゲットタイプを使っているのが面白い点ですね。

元記事を表示

Firebase FireStore使ってみた

###対象
これからFireStoreを使ってみようと思っているiOSエンジニア

##FireStoreとは
Firebaseが提供しているデータベースです。
MySQLなどのRDB(リレーショナルデータベース)の行列とは違い、「コレクション」「ドキュメント」「データ」の3つで構成されています。

![structure-data.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246668/91762533-48e2-4f7f-1d4d-fa8bbcfee64e.png)

また、アプリとの直接的なやりとりでDBのデータを直接取得できます。

##料金
| 無料枠| |
|:-:|:-:|
| 保存量|1GB|
| 通信量|10GB/月
| 書き込み量|2/日
| 読み取り量|5/日
| 削除量|2/日|

| 有料| |
|:-:|:-:|
| 保存量1GBあたり|$0.18|
| 通信量|ロケーションにより異なる
| 書き込み量10万件あたり|$0.18
| 読み取り量10万件あたり|$0.0

元記事を表示

FlutterアプリをCodemagicでCDしてみた(App Store Connect)

Google Playストア版の続きになります。

FlutterアプリをCodemagicでCDしてみた(Google Playストア)
https://qiita.com/kasa_le/items/17720a02ea0a4de2b66e

Codemagicへは、すでにtagトリガーなどで動くワークフローがあるものとします。
([こちらの記事](https://qiita.com/kasa_le/items/d23075d817f42e869778#codemagic%E3%81%AB%E5%85%A5%E3%82%8C%E3%81%A6%E3%81%BF%E3%81%9F)などを参照して下さい。)
また、App Store Connectにて、アプリを登録済で、かつTestFlightへ手動でアプリ公開をしたことがあることが前提です。
([こちらの記事](https://qiita.com/kasa_le/items/fed9f25b92091bd162ce)などを参照して下さい。)

# 手順

基本的には以下のページの通りです。
https://docs.codemag

元記事を表示

iOSシミュレーターを初期化する

シミュレーター内にサンプルアプリが増えたので、一度すっきりさせたいなーと思った時に調べた。

シミュレーターアプリの
– Device
– Erase All Content and Settingを選択

スクリーンショット 2020-06-13 11.48.06.png

元記事を表示

OTHERカテゴリの最新記事