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

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

Could not load NIB in bundle の対処法

ほにゃららという NIB ファイルはあるんだけど、ロードされていないみたい、という現象があった。
なにかの拍子に、Build/PhasesのCopy Bundle Resourcesから該当ファイルが消えていたのが原因だった。
Build/PhasesのCopy Bundle Resourcesの+ボタンをクリックして該当ファイルを追加したら治りました。

![スクリーンショット 2020-12-25 9.44.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/4cda2d7f-255a-9ce0-758f-e3407754926a.png)
?
****
フリーランスエンジニアです。
お仕事のご相談こちらまで
rockyshikoku@gmail.com

Core MLを使ったアプリを作っています。
機械学習関連の情報を発信しています。

[Twitter](https://twitter.com/JackdeS11)
[Medium](https://medium.com/@roc

元記事を表示

[AutoLayout] Intrinsic Content Sizeを活用しよう〜その2 Self Sizing編〜

## はじめに

こんにちは![Life is Tech ! #2 Advent Calendar 2020](https://qiita.com/advent-calendar/2020/life-is-tech-2)の22日目を担当しますふみっちです。

この記事は[〜その1 概要編〜](https://qiita.com/fummicc1_dev/private/64ee8dfef8a54df0f4dd)の続きとなっていて、`Intrinsic Content Size`に関する具体的な実装を解説を行います!
プロジェクト全体は[こちら](https://github.com/fummicc1-lit/AdventCalendar2020)からダウンロードできるので是非手元で動かしてみてください?

`Intrinsic Content Size`を用いると動的なコンテンツの変化によるサイズ調整を自動で実装できるようになるという話を[〜その1 概要編〜](https://qiita.com/fummicc1_dev/private/64ee8dfef8a54df0f4d

元記事を表示

[AutoLayout] Intrinsic Content Sizeを活用しよう〜その1 概要編〜

## 始めに

こんにちは、[Life is Tech ! #1 Advent Calendar 2020](https://qiita.com/advent-calendar/2020/life-is-tech)の22日目を担当しますふみっちです。

今回はiOSアプリ開発における`Intrinsic Content Size`に関する知見が最近深まってきたのでそれに関して話していけたらいいなと思います。どうぞお付き合いください。

また、この記事は〜その1 概要編〜となっていて、`Intrinsic Content Size`に関する説明を行います。実装とそれに関する解説は[Life is Tech ! #2 Advent Calendar 2020 22日目](https://qiita.com/fummicc1_dev/private/b0078216c9d8fb9281a2)に書かせてもらったので合わせて確認してもらえると嬉しいです☺️

## 主題

AutoLayoutは制約を用いてUIView同士の相対的な距離を決定します。その制約は一度に有効となる個数に限りがあります

元記事を表示

API呼び出し元(呼び出し契機)によって、呼び出し結果のハンドリングを分けたい

### やり方

API呼び出しを担当するメソッドをラップするとできます。
以下では、API呼び出しを担当するメソッドを`APIClient.fetch`とします。

“`swift:
func fetchData(from caller: ) {
APIClient.fetch { result in
// 呼び出し元情報 caller と呼び出し結果 result を使って、ハンドリングを行う
}
}
“`

RxSwiftを使っている場合でも、同じようにできます。

“`swift:
func fetchData(from caller: ) {
APIClient.fetch
.subscribe(onNext: { result in
// 呼び出し元情報 caller と呼び出し結果 result を使って、ハンドリングを行う
})
}
“`

元記事を表示

【ReactNative】実機ビルド、テストアプリビルド(Archive)で起きたトラブルシューティング~IOS編~

こんにちは。ブリューアスwebフロントエンジニアのsuginokoです。
前回、[実機ビルド、APK生成で起きたトラブルシューティング~Android編~](https://qiita.com/suginoko/items/cdae27d68a08decddc8c)
書かせていただきましたがこちらのIOS編です。

今回も初めてのReactNativeで出くわしたトラブルシューティングを書いていこうと思います。
前回と同じことを書きますが、アプリ開発に携わったことのない同じようなフロントエンジニアさんに届きますように~
(ios色々苦戦して弊社のエンジニアに聞きまくりました。ありがとうございます。優しい世界。)

## 環境
* react: 16.9.0
* react-native: 0.61.5
* react-native-agora: 2.9.1-alpha.2
* react-native-firebase: 5.6.0

※XCode12
※パッケージはおおまかに使用したものだけ記載
基本的にはwindowsで実装してますが、expoは使用しておらず、ios開発は別途M

元記事を表示

Flutter – AppBarのTitleを左寄せ、中央寄せにする

#AppBarの作成
まず、シンプルなAppBarを作成します。
コードは以下のとおりです。

“`dart
appBar: AppBar(
title: Text(
“AppBar Sample”,
),
),
“`
次にその挙動を確認してみましょう。
機種は以下のとおりです。
iOS:iPhone12ProMax
Android:sdk gphone x86 arm
#iOS
![iOS – 初期状態](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/980010/5c7f8a83-43fd-9caa-c919-5f36eddacc67.png)
#Android
![Android – 初期状態](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/980010/6b3fa921-e015-488d-4030-f365548ef371.png)
#挙動の共通化
おわかり頂けましたか?
iOSではタイトルが中央揃いになってい

元記事を表示

iOS学習初期に作成したアプリをユニバーサルアプリになるように作り直してみた

この記事は株式会社アクシス [Advent Calendar](https://qiita.com/advent-calendar/2020/mediaxis) 25日目の記事です。

半年ほど前にiOSのキャッチアップで最初に電卓を作成したのですが、
出来心でビルドしてみたらiPhone11を持っている選ばれし者にしかまともに使えない(UIが崩壊する)電卓になっていたのでiPadまで綺麗に表示できるのを目指して修正します。
## ユニバーサルアプリとは
– 様々なタイプのデバイスに対応するアプリをさします

## 現状
– iPhone11では少しガタガタではございますが、まぁ何とか使えるぐらいだと思います!
– iPadはご覧の通りでございます!

| iPhone11 | iPad |
| ——– | ——– |
|![qita3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657899/eeb76da5-278c-4875-78bf-7c16152be628.png)|![

元記事を表示

[Swift] 現在propertyWrapperでは変数名に日本語を使えません

Swiftは変数名に日本語や絵文字や、その他のかなり多くの文字を使うことができます。
そこで英語の苦手な知人に日本語名の変数でいろいろ説明していたのですが、なんと「propertyWrapperでは日本語が使えない」という事実が明らかになったので、共有します。

環境はSwift5.3です。

# 実験
実際にはSwiftUIをいじっている際に起こったのですが、結局問題なのはpropertyWrapperなので一緒です。
まずはシンプルなラッパとそれを使う構造体を宣言します。ポイントは「値」という変数名です。

“`Swift
@propertyWrapper
struct MyWrapper{
let wrappedValue: T
let projectedValue: T

init(wrappedValue value: T){
self.wrappedValue = value
self.projectedValue = value
}
}

struct MyValue{
@MyWrapper

元記事を表示

【Swift】日時、数、通貨、データサイズ、リスト、人の名前、単位付きの数から String へのフォーマットは自分で実装しないで

**令和1998年……?**

この記事は [iOS Advent Calendar 2020](https://qiita.com/advent-calendar/2020/ios)

元記事を表示

GoogleFormをチョット理解してガワだけオリジナルフォームにする

#ガワだけオリジナルフォーム??
画面だけを自分の好きなデザインのフォームにしたいけどGoogleFormみたいな機能使いたいという時に使うちょっとした小技です。

#下準備
適当にGoogleFormを作ります
適当に入力形式の項目などを追加します
適当に解答集計用のスプレッドシートを作っておきます
適当なところから叩けるようにログインが必要のない設定にしておきます

#Chrome Developer Tool
GoogleFormを開いたまま、ChromeのDeveloperToolを開きます
※option + command + i (Macの方は)

#テキストフィールドに割り当てられたフィールド名を確認する
![スクリーンショット 2020-12-25 6.00.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/84002/e2455b87-bc73-4790-154c-db01210c447f.png)

#実はこっちの方が楽説・・・・
昔こんなのあったけ?みたいな気持ちですが、

元記事を表示

【SwiftUI】アプリの起動状態を取得する方法【iOS】

初投稿です!
SwiftUIでiOSアプリを開発していて、アプリの起動状態を取得する方法を調べるのに苦労したので備忘録も兼ねてこの場で共有させていただきます。

# iOSアプリにおける起動状態について
iOSアプリの起動状態はActive, Inactive, Backgroundの3つの状態に分けることができます。
状態遷移図は下図の通りです。起動するときはInactiveを経由してからActiveになることや、ActiveからBackgroundになるときもInactiveを経由することが分かると思います。

詳しくは[SwiftUI] Textの省略位置の指定方法

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638786/d8465754-0bc8-dec4-d213-d2fdc238fea7.png)

調べ方が悪くなかなか情報が見つからず、「SwiftUI Text Overflow」で調べてようやく見つかりました。文字溢れっていうんですね。

“`Swift
struct TestView: View {
var body: some View {
VStack{
Text(“SwiftUIでTextの省略位置を指定するにはtruncationModeを使用しましょう”)
.truncationMode(.tail)
.lineLimit(1)
Text(“SwiftUIでTextの省略位置を指定するにはtruncationModeを使用しましょう”)
.truncatio

元記事を表示

かくつかないiOSアプリを作るために

## 自己紹介

Link-Uの原野です。iOS 50% / Web フロント 50%くらいで仕事をしてます。

## iOSにおけるカクツキとは

iOS では画面をスクロールした際に、滑らかにスクロールせず一瞬アニメーションが飛んでしまうフレーム落ちをするタイミングがあります。
これはユーザー体験によくない影響があり、iOS アプリでは改善の対象となります。

Appleも最近この辺に力を入れているっぽく、WWDCでも一大テーマとして多くのセッションがありました。

## iOS の描画の流れ

まずはカクツキの機序を知るために、iOSが描画のために何をやっているかをざっくり追っていきましょう。

### リフレッシュレート

iOS では画面の描画の処理は一定のリフレッシュレートで行われています。
その速度は iPhone/iPad では 60Hz(16.67ms/回)、最新の iPadPro では 120Hz(8.33ms/回)となります。
カクツキは描画のための処理がこのリフレッシュレート内で処理しきれない場合に発生します。

### RenderLoop

iOS では描

元記事を表示

【Flutter】スマホアプリでよく見かけるチュートリアルページを作る方法(3つのパッケージを比較)

# 最終的にこういったチュートリアルが作れるようになります

左から、tutorial_coach_mark flutter_sliding_tutorial flutter_overboardを使用したチュートリアルページです。

元記事を表示

ARKit 4でのFace Trackingの改善

ARKit 4では、TrueDepthカメラを搭載していないデバイスでもFace Tracking(フェイストラッキング)が利用可能になった。つまり、**今まではiPhone X系、iPad Pro系のフラッグシップモデル(わかりやすく言うと、「ホームボタンのないモデル」)でしか利用できなかった同機能が、より幅広いiOSデバイスで利用できるようになった**。

![picture_pc_29069b334e00e11dc0184dd785bab291.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3180/2e1fabd1-9f16-3041-2746-c255c1f6476c.png)

## なぜ嬉しいのか

Face Trackingは**なかなか実用途が見えづらいスマホARの中でも「顔に合わせてアバターを動かす」というわかりやすい用途**があり、

![picture_pc_2441254802dfde109d7795232c69a095.png](https://qiita-image-sto

元記事を表示

Swift TextFieldに入力された文字がメールアドレスかどうか確認する方法

#TextFieldに入力された文字がメールアドレスかどうか確認する方法
今回、TextFieldに入力された文字がメールアドレスかどうかによって条件分岐する方法を実装していきたいと思います。

#まず初めにLabel,TextField,Buttonを設置
![スクリーンショット 2020-12-24 15.47.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933229/43dc3e32-4c14-3462-ea9b-e5a5b9cf19b4.png)

#次にitemとコードを接続
![スクリーンショット 2020-12-24 15.49.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933229/15ecf39f-3f3c-9782-47bd-9b2e3fbc78c7.png)

#下記のコードを追加する

“`
//メールアドレスかどうかのクラス
class func isValidMailAdd

元記事を表示

続・App Store Small Business Programを申請してみた→結果が出ました

App Store Small Business Programの概要と申請手順については、以下の記事をご参照ください。
[App Store Small Business Programを申請してみた](https://qiita.com/y-some/items/4a18f0e8a805f0d6de83)

この記事は、申請後の結果についてです。

2020/12/23に、Appleから `Welcome to the App Store Small Business Program.` という題名のメールがきました。

そこには英語で以下のような内容が書かれていました。

– 有料アプリとアプリ内課金の手数料が、2021年1月1日から15%になる。
– 2021年に収益が100万米ドルを超えた場合、残りの期間には標準の手数料率が適用される。
– 2020年12月31日以降に、アプリの転出または転入を行った場合は、プログラムの参加資格がなくなる。

ということで、申請は無事に通ったようです。:grinning:

元記事を表示

意識の高いヘルシープログラマはショートカットアプリを活用する

Hello, World! あーみーです.
夏は朝6時30分に起きてラジオ体操をして,一日を始める意識の高い(笑)生活を心がけていました.
しかしながら,冬の朝はとても寒くめっきり実行できなくなってしまいました.
また,6時30分にラジオつけるって起床時間が合わないと結構辛いです.
そこで,今回はiOSのショートカットアプリを使用して,自分の設定した起床時間になったらラジオ体操の曲が流れ,その後,簡単にブリーフィングをしてくれるショートカットを作成しました.

## 制作物

今回,実際に作ったショートカットは[こちら](https://www.icloud.com/shortcuts/905a910d66094a8881589a768988bbb7).使用の条件は以下です.

– ラジオ体操の音源がある(Apple Music等)

あとは,ショートカットアプリのオートメーションで,「このショートカットを起床時に実行する」ように設定すれば,朝自分が起きたタイミングでラジオ体操が自動的に流れます.なお,**「実行の前に尋ねる」をオフにしておかないと自動で流れません.**

> 12月

元記事を表示

mac スクショ方法(忘備録)

#Macでのスクショ方法
一定の期間が空くと「どうやってやるんだっけ〜」となってるのでここに記します。

###全画面のキャプチャ
“`php
command + shift + 3
“`
###選択部分のキャプチャ
“`php
command + shift + 4
“`
#最後に
よし。

元記事を表示

サブする iOS で取り組んでいる DI(Dependency Injection)可能な実装について

iXIT で iOSエンジニアをしています、 @branch10480 です。今回は私が担当しているプロダクト [サブする](https://sabusuru.jp/) で対応している 「**DI(Dependency Injection)**可能な実装」について書いていきたいと思います。

# 依存性注入:DI(Dependency Injection)って何?

この DI (Dependency Injection) については Wikipedia ではこのように記載されています。

> DIを利用したプログラムを作成する場合、コンポーネント間の関係はインタフェースを用いて記述し、具体的なコンポーネントを指定しない。具体的にどのコンポーネントを利用するかは別のコンポーネントや外部ファイル等を利用することで、コンポーネント間の依存関係を薄くすることができる。

最初、「具体的なコンポーネントを記載しない」、「コンポーネント間の依存関係を薄くすることができる」などがあまりピンと来ず、どういうケースで役に立つのかがイメージできませんでした。

ですのでその時の自分に説明するつもりで書い

元記事を表示

OTHERカテゴリの最新記事