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

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

IBActionのsenderはAnyでなく具体的な型を指定しよう

`UIButton` タップ時の処理などを `IBAction` で紐付けるとき、 型は `Any` がデフォルトなので、そのままにする人も多いのではないでしょうか。
スクリーンショット_2020-06-16_11_39_03.jpg

“`swift:×
final class FooViewController: UIViewController {
@IBAction private func didTapCloseButton(_ sender: Any) {
}
}
“`

それだとキャストしないと型に応じた処理を実行できないので、具体的な型を選択して紐付けるのが望ましいです。
スクリーンショット_2020-06-16_11_43_16.j</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'>IBAction</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/uhooi/items/e90d06e5d5681d72cbd0'>元記事を表示</a></div>
<h3 id=Apple iPhone と Google Pixel の解像度 (dp) メモ

# iPhone (iOS)

320px 端末そろそろ切られそうっすね (元祖 SE は 2016 年発売だし)

Apple iPhone

# Pixel (Android)

アップデートで数十 dp づつ伸びる Pixel くん

Google Pixel

# 解像度

| 端末 | 解像度 |
|:–|:–:|
| iPhone 11 Pro Max/XS Max/11/XR | 414×896 |
| iPhone 11 Pro/X

元記事を表示

simctl コマンドで iOS シミュレータの初期セットアップを実行する

# はじめに

仕事やプライベートの開発で iOS シミュレータを利用することが多いのですが、Xcode をアップデートするたびにシミュレータが初期化されてしまうのが地味にストレスでした。少し調べてみたところ `simctl` を利用することでサクっとシミュレータの初期セットアップが実行できることがわかったので書き留めておきたいと思います。

# 環境

Xcode 11.5

# できたスクリプト

シミュレータを起動した状態で下記スクリプトを実行すると、

– Charles Proxy の CA 証明書のインストール
– 使用言語/地域の変更(日本語/日本)

が完了します。

“`bash:setup-simulator.sh
#!/usr/bin/env bash

set -eu

device=${1:-boote

元記事を表示

[iOS, GPU] Metalの描画パイプラインを図解してみる

Apple製のGPUシェーダー言語Metalにて、初学者には中々掴みにくい描画の仕組みについて図示しながら概説してみたいと思います.

# はじめに
ざっくりと、Metalでは以下のような手順で描画が行われます。

– 描画情報の設定 (頂点や色の設定など)
– 描画コマンドの生成と送信
– Shader (.Metal拡張子に書かれた描画関数) の通り描画を実行.

about_metal.png

以下、これらそれぞれの概説を図とともに見ていきたいと思います.

# 描画情報の設定

まずは図に記載の
– MTLRenderPipelineDescriptor
– MTLRenderPassDescriptor
の2つのオブジェクトに描画情報をセットし、これを描画コマンドへと渡すようにします.

元記事を表示

Unity iOSのクラッシュレポートについて調べてみた(活用方法や注意点など)

Unityには現状iOSプラットフォームのみ利用可能な「[UnityEngine.CrashReport](https://docs.unity3d.com/ScriptReference/CrashReport.html)」と言うAPIが備わってます。

こちらの機能は、恐らくはiOS標準で備わっている?[クラッシュレポート機能](https://developer.apple.com/documentation/xcode/diagnosing_issues_using_crash_reports_and_device_logs)を利用して実装されているものと思われ[^1]、それを踏まえつつ実際に有効活用する上で必要となってくるであろうレポートの読み方や注意点について調べみたのでメモ序に纏めて行ければと思います。

[^1]: Unity側の内部実装まで追いきれていないので、あくまでも推測の域を出ない

もし間違いなどあればコメントにて教えて頂けると幸いです! :bow:
(間違いなどあったら随時修正予定…)

**記事中で利用するUnity/Xcodeのバージョンについて

元記事を表示

[Swift]UIImage型とData型の相互変換

# はじめに
Swift4からUIImage型とData型の変換をシンプルに書けるようになったので紹介します。
特にUIImage型→Data型への変換はしばしばextensionを作っていましたが、それらと同じことが公式にできるようになりました。

# UIImage型→Data型
`image`をData型に変換したいUIImage型のインスタンスとします

“`swift
// pngに変換する
image.pngData()

// jpegに変換する
// compressionQualityには0~1の範囲で圧縮率を指定する
image.jpegData(compressionQuality: 1)
“`

# Data型→UIImage型
`data`をData型に変換したいUIImage型のインスタンスとします

“`swift
// UIImage?型になるので、必要に応じてアンラップをする必要がある
UIImage(data: data)

// 強制アンラップしてUIImage型にする
UIImage(data: data)!
“`

# 参考リンク
ht

元記事を表示

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をアレンジしていますが、全体を同じデザインでアレンジしたい場

元記事を表示

OTHERカテゴリの最新記事