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

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

子供と作る「おみくじ」アプリ on iPhone

# 対象者
– 幼児〜小学校低学年のお子さんと過ごす中で、
– 在宅勤務等でMacに向かわなければならないのに、
– 「なんかアプリ入れてよー」とiOSデバイス持ってせがまれる方
– Mac, iOSデバイス, Xcode, Lightningケーブル が手元にあることは必須
– ガチのアプリ開発者はもっと上手くやってください

# 背景と狙い
– この記事、プロジェクトは、Swiftのコーディングスキルを身につけるとか、開発とは何かといったテーマの学びを目的としていません。
– スーパーで売られている切り身のマグロが,元は一匹の魚であったと水族館で教えるような… 手元のiPadやiPhoneで動いているアプリが人のアイディアと努力によって組み立てられていることを実感してもらうような目的です。
– そして最大の目的は、仕事中に構って構って攻撃を受けないよう、興味を満たすか興味をそらすかすることです。

# 進め方(プロジェクトを成功させるために不可欠)
1. まず最初に、お子さんに何も話す以前に徹夜でもなんでもして一通り動くようにする
2. お子さんに必要な素材を作ってもらう
3. お

元記事を表示

【Swift】TabBarControllerとNavigationControllerを両方使うとタブ遷移にて画面が真っ白になる

`definesPresentationContext = true`
これでOK

#### 参考
https://stackoverflow.com/questions/36938239/tab-bar-and-uisearchcontroller-giving-black-screen

元記事を表示

【Swift】Controllerとxibを繋げる方法

一番簡単な方法は、`controller.swift`と`controller.xib`のファイル名を同じにする。

もしどうしても同じ名前にできない場合は、明示的にControllerからxibを紐付けることも可能。

“`swift
override func loadView() {
if let view = UINib(nibName: “xibName”, bundle: nil).instantiateWithOwner(self, options: nil).first as? UIView {
self.view = view
}
}
“`

元記事を表示

【Swift】TabbarItem と NavigationItem の名前を連動させる

`TabbarItem`と`NavigationItem`それぞれの名前を連動させたいと思って調べたら簡単にできるみたいです。

`NavigationController`の下に`TabbarItem`があります。
なので`NavigationController?.NavigationItem.Title`を変更するとタブの名称も連動して変わるようです。

連動して変えたくない場合は`TabbarItem.title`を直接変えるとそれぞれ設定できます。

元記事を表示

【Swift】UIButtonをimageをセットしたが表示されない件

## UIButtonにsetImage()したけど画像の色が違う
UIButtonを画像にしたい+`.normal`と`.selected`で画像を切り替えたいと思った時に躓きました。

##### ● 実装(Rx使ってます)

“`swift
private func setButton() {
button.setImage(R.image.grayCat(), for: .normal)
button.setImage(R.image.purpleCat(), for: .selected)
button.rx.tap.bind(to: buttonTapBinder).disposed(by: disposeBag)
}

private var buttonTapBinder: Binder<()> {
return Binder(self) { base, _ in
base.button.isSelected = !base.button.isSelected
}
}
“`

##### ● 使った画像

元記事を表示

iOSリバーシリファクタリングチャレンジ w/ Redux

# リバーシリファクタリングチャレンジ

[koher](https://twitter.com/koher)さんが公開された、[このFat View Controller、あなたはリファクタリングできますか?](https://qiita.com/koher/items/2bbe520149cec2226ee8)チャレンジに参加しました。

> 本チャレンジは、 Fat View Controller として実装されたリバーシアプリをリファクタリングし、どれだけクリーンな設計とコードを実現できるかというコンペティションです(ジャッジが優劣を判定するわけではなく、設計の技を競い合うのが目的です)。

– [GitHubのソースコード](https://github.com/refactoring-challenge/reversi-ios)
– [Qiitaの解説記事](https://qiita.com/koher/items/2bbe520149cec2226ee8)
– [Swift Zoomin’ チャレンジ #1 チャレンジ](https://swift-tweets.con

元記事を表示

Flutter Web View で Localの HTML , CSSを表示する

# はじめに
皆さんは**Flutter**触ってますか?
Googleが開発しているモバイル向けクロスプラットフォーム,かつWebまでかけちゃうぜ!!ってことで注目しいましたが,思ったとおりにできることも増えてきて,「もうアプリはFlutterで良いじゃん」も近いのかなと思っている今日このごろ.
今回はLocal(端末)に保存したHtml, Css の Web View 表示で手間取ったのでまとめていきます.

# Web Viewって?
アプリ内でWebページを表示できる機能です.
アプリによってはWeb Viewだけで実装しているようなのもちらほら...
そんなわけで結構普通に必要な機能です.
今回は端末内に保存したHtmlを表示させることが目的です.
Flutterでは[こちら](https://pub.dev/packages/webview_flutter)のパッケージを使うことで実装できます.

# 環境
“`bash
$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):

元記事を表示

リリース済みのiosアプリの dSYMファイルの場所(iTunesConnectから取得)

# はじめに
FirebaseのCrashlyticsを使っていると、『不足しているオプションの dSYM をアップロードしてください』というメッセージがでることがあると思います。
![スクリーンショット 2020-05-16 18.58.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455240/95160154-5043-4157-5c96-472ed4cbdb77.png)

このdSYMファイルの場所を探すのに一苦労したので共有しときます。

※前提として、アプリはリリース済みであるとします。

# 方法
* iTunesConnectに移動して、
[あなたのアプリ]>アクティビティ> [希望するビルド番号]> dSYMのダウンロード
![うんと.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455240/4b7311ab-9b15-3d58-969e-3c737b15c771.png)

* あと

元記事を表示

SwiftでTwitterのプロフィールであるようなUITableViewのヘッダーの画像を引っ張って拡大させる機能をたった数行のコードで実装する

Tiwtter等のアプリでよくあるプロフィール画面のカバー画像を下に引っ張ると拡大されるPrallaxHeader機能(っていうんですかね?)ですが、
実はこれめちゃくちゃ簡単に実装できます。

完成系はこんな感じです。
![ezgif-7-b4b7b38acba0.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201186/f3acee12-b550-fdac-46fc-c5c10a2c7990.gif)

[GitHub](https://github.com/kumanmushi/ParallaxTableHeaderSample)にサンプルもあります。

# 環境
Xcode Version 11.4.1 (11E503a)
Swift version 5.2.2 (swiftlang-1103.0.32.6 clang-1103.0.32.51).

# 実装

使用しているはUITableViewとtableHeaderViewです。
まあこの構成はよくあると思いますが、ポイントは__ヘッダ

元記事を表示

【超爆速 秒でコーディング】【Flutter】Adobe 公式 XD プラグインでXDからFlutterに変換してみた

# XD→Flutterがやばい

**この変換が30秒でできます。**

ファイル名

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

ファイル名 ファイル名LaunchScreenの画像をVector(PDF)画像に置き換えてもアプリ起動時の画像が変わらなかった問題

## 結論
### 方法1
– LaunchScreenに使っているAssetsの画像名を変更する

### 方法2
– cacheを削除するコードを呼び出す([参考元](https://rambo.codes/posts/2019-12-09-clearing-your-apps-launch-screen-cache-on-ios))
– 試してないので実際に効果あるかは未確認

“`swift:filename.swift
import UIKit

public extension UIApplication {
func clearLaunchScreenCache() {
do {
try FileManager.default.removeItem(atPath: NSHomeDirectory()+”/Library/SplashBoard”)
} catch {
print(“Failed to delete launch screen cache: \(error)”)

元記事を表示

【iOS】バージョン判定およびアップデートの処理の定義

~~~Objective-C:UpdateStatus.m
typedef NS_OPTIONS(NSInteger, UPDATE_STATUS) {
UPDATE_NONE = 0, // 変更なし
UPDATE_ANY, // 任意
UPDATE_CONFIRM, // 確認
UPDATE_FORCED, // 強制
};
~~~

はい!

これ以上に種類があれば追加していきます。

#はじめに
アプリをリリースしていくとアップデートというのが付きっきりになっていきます。
毎回、現場でアップデートの切り出しで処理を書いていくのですがこれを定めておきたい!
という願望もありつつここに書いていきます。

## アップデートの種類

– 強制アップデート
– 確認アップデート
– 任意アップデート
– 変更なし

この種類なのかなと思っております。

## 用語の整理

### 強制アップデート
強制的

元記事を表示

「はじめてのDart言語[基礎文法1]」 ~私文男子の格闘第6話~

#はじめに
(2020/5/15投稿)
最近iPad Proを購入し、非常に作業効率や勉強体験が変わって満足しています、私文男子です。

本日は前回紹介した**Dart Padを使って、簡単なコードを走らせてみる**ということをやってみたいと思います!
プログラミングの基礎中の基礎である

・Hello World
・算術演算
・変数/代入
・if文
・for文
・おまけのfizzbuzz

を紹介したいと思っています。

Dart言語とは?や、Dart Padって何?という部分は

[はじめてのDart言語(0) ~私文男子の格闘第5話~](https://qiita.com/shibundanshi/items/0e5cb02b25da9dc8a2cf)

を参考にしてもらえるとお分かりいただけるかと思います。
それではやっていきましょう!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629658/92182c6c-5c01-c99f-2ff1-05f8593d70dc.png)

元記事を表示

UIalertControllerが微妙に使いづらかったのでいい感じのAlertControllerを自作する!

#はじめに
先日インターン先のタスクで共通で使う通知部分を実装する際、デフォルトのUIAlertControllerだとボタンのテキストをいじれなかったりとデザインに合わせることが難しかったので、一からUialertControllerに似た実装の仕方で作ってみたのでそれについてまとめてみようと思います!

######github
https://github.com/ikemoti/OriginalUIAlertController

######デザインの用件内容
・アラートのttitleやmessage部分のフォントやtextColorを変えたい
(デフォルトのアラートだと変更不可能)
・アラートの上部にバーナー画像を任意で追加可能にして欲しい
・ボタンの数を任意で選択できるようにしてフォントや文字色も選択可能にして欲しい
・なるべく使う際にUIAlerttControllerに似た使い方ができるようにして欲しい

######完成図
Flutter初心者が100日でアプリリリースするまでの記録

##この記事は
Flutterの初心者が100日後にアプリリリースするまでの軌跡()を綴ったものになります。
また、Flutterでアプリ開発をしてみて思った所感などを書いていきます。

Flutterからプログラミングやってみようかな? とか
アプリ開発始めてみようかな? とか
Flutterに少しでも興味がある方は特に是非読み進めてください。

##何故書こうと思った?
実はもう100日チャレンジを始めてから58日が経過しています。何故このタイミングなのか?
,,, 思いつきで書き始めました。

強いていうなら、今Flutterについて結構盛り上がっていると思うんですよ、Youtubeとかtwitterとか某フリーランスエンジニアの方とかね。それに乗っかろうかなと思ったわけです。

##開発者(筆者)スペック
専門学校で4年間プログラミング、データベース、ネットワーク等々を学び、今年の春から一部上場企業のWebエンジニアとして働いています。
研修中ですが、優しい先輩に囲まれ充実した日々を送っています。(なんか会社に提出する用みたいですね)

個人開発は、ちょうど約2年ほど前から初め

元記事を表示

【Web2App】ウェブページからアプリで開くをFirebase Dynamic Linksを使って簡単に実装する方法

# 概要
WEBからAPPに誘導する所謂Web2AppをFirebase Dynamic Linksを利用して
インストールしている・していないに関わらず一つのリンクで挙動を変えて
インストールされていない場合はストアに、されている場合は特定のページに遷移させる流れをざっくり書いておきます。

詳しいことは公式ドキュメントに書いてあるのでこちらを見てください。
[Firebase Dynamic Links](https://firebase.google.com/docs/dynamic-links?hl=ja)

# page.linkの作り方
1. FirebaseコンソールのレフトメニューからDynamicLinkに遷移
2. 使いたいドメインを入力(小文字と数字のみを含む 3~100 文字で****.page.linnkの形で入力)

※適当にやっちゃうと、消したあとそのドメインは1ヶ月間使えないので慎重に

独自ドメインを使った方法もあるので使いたい方は公式ドキュメントを見てください
[Dynamic Links のカスタム ドメインを設定する – Firebaseの公式ド

元記事を表示

SwiftUIでQRコードを表示してみる

# はじめに
QRコードを生成するアプリを作ろうと思い、せっかくなのでSwiftUIで作成しました。

# コードの解説
## QRコードの生成
こちらは、よく検索すると出てくるコードです。いくつか検索していて気付いたのですが、`CIContext().createCGImage()`を実行していないコードがあります。
`outputImage`でciImageが生成されているのでGPUによるレンダリングする必要があるので、長いですが実装が必要なのではないかと思います。

あとハマったのは、謝り訂正レベルを指定するパラメーター”inputCorrectionLevel”には、”L”/”M”/”Q”/”H” いずれかを指定する必要があります。(数字だと思い込んでしまった・・・)

“`swift:QRCodeMaker.swift
func make(message:String , level:Int) -> UIImage? {
guard let data = message.data(using: .utf8) else { return nil }

元記事を表示

【iOS】iOSアプリ開発入門~環境構築編~

iOSアプリ開発について人に教えることがあったのでいい機会だと思い基礎的な部分についてまとめていきます。
いくつか記事を投稿していくかと思うので追っていってもらえると幸いです。

今回は環境構築編ということでiOS開発に必要なXcodeのインストールからシミュレータでのアプリ実行までをまとめます。

## Xcodeとは
Apple社が提供するiOS、Mac用の統合開発環境(IDE)です。
iOSアプリを作成する際はこのXcodeを使って開発します。

XcodeはAppStoreから無料でダウンロードできますが、インストールにはMac環境が必要となるので注意が必要です。若干処理が重いことも多くなるべく新しいMacがおすすめです。

実際にストアに公開する場合は[Apple Developer Program(ADP)](https://developer.apple.com/jp/programs/)に登録する必要があります(11,800円/年)がこちらは別途記事にします。

## Xcodeインストール
[こちら](https://apps.apple.com/jp/app/xco

元記事を表示

マイナンバーカードのパスワード残り試行回数を調べる

本記事は Qrunch とのクロス投稿です。
[マイナンバーカードのパスワード残り試行回数を調べる | Qrunch(クランチ)](https://qrunch.net/@treastrain/entries/HytRhh1JcxKt0jXq)

—–

最近話題のマイナンバーカード。マイナポータルを用いた申請等で必要なカードで、このカード1つに4つのパスワードがそれぞれ設定されています。
パスワードの設定は各々がマイナンバーカードを受け取る際に設定したはずですが…
これらのパスワードはそれぞれ規定回数以上連続で間違えてしまうとロックされ、このロック解除のために役所へ行かないといけなくなります。

そしてこの度、[Japan NFC Reader](https://japannfcreader.tret.jp/) では [Ver 1.0.5 で「マイナンバーカードのパスワードの残り試行回数」を確認できるようになりました。](https://twitter.com/JapanNFCReader/status/1260404832210317315)
また、それに伴い [Japan

元記事を表示

【SwiftUI】入力開始時に TextField の Placeholder の文字列を非表示にする

## はじめに

**SwiftUI** ではデフォルトでは入力開始時に `TextField` の
Placeholder の文字列は表示されたままですが,
入力開始時に Placeholder を非表示にできるのかについて
検証をする機会があったので備忘録です。

**通常はデフォルトのままで大丈夫だとは思います。**

## 実装

結果的に Placeholder の文字列を定数にせず,
バインドすることで実現できました。

`TextField` を生成する際に下記を使って入力開始/終了時の処理で
placeholder の文字列を変更しています。

“`swift
init(_ title: S, text: Binding, onEditingChanged: @escaping (Bool) -> Void = { _ in }, onCommit: @escaping () -> Void = {}) where S : StringProtocol
“`

サンプルコードはこちらです。
1つ目の `TextField` がデフォルトのシンプ