- 1. Xcodeの「Please reconnect the device.」の解決方法
- 2. Human Interface Guidelines part1
- 3. Content Hugging Priority と Content Compression Resistance Priority を理解する
- 4. 【Swift】CoreNFCのコールバック地獄から逃れる
- 5. FlutterにFirebase(Firestore)を導入したら、iOSのビルドが遅くなった
- 6. iOSにFirebaseをpodで追加したが、クラッシュしてしまう問題の解決
- 7. [Xcode] 実務的Tips: チーム内でXcodeの設定項目を合わせて不要な修正差分が出ないようにする
- 8. [Xcode] 実務的Tips: Storyboard IDの2つの用途
- 9. 【Swift】String.SubSequenceとは何か?
- 10. 本日学んだ、オプショナル型の基礎。【 ! の混同】
- 11. CartoonGANをiOS用に変換して、アニメ風自動変換してみました
- 12. [SwiftUI サンプルコードあり] 入れ子構造になったJSONをMVVMモデルを使って表示する方法
- 13. iPad画面サイズ、ピクセル数早見表
- 14. Inside Flutter Hooks
- 15. iOSのdidBecomeActive/willResignActiveを視覚的に把握する
- 16. コードでSwiftのautolayoutを書く
- 17. Core Imageによるぼかしのクオリティを高める
- 18. Core Dataのtransformableな属性をセキュアに実装する
- 19. SwiftUI用のジョイスティックUIライブラリ OMJoystickの使い方
- 20. RxSwift における subscribeOn と observeOn の違い
Xcodeの「Please reconnect the device.」の解決方法
実機のOSのバージョンとXcodeのバージョンばあっていない時に、発生するエラー。わかりにくいです!!
# 対応方法リスト
1. Xcodeをアップデートする
2. 現在のXcodeのバージョンに、実機のiOSに対応するDevice Supportを突っ込む([ここら辺](https://sussan-po.com/2019/10/12/new-ios-device/)が参考になる)
Human Interface Guidelines part1
##はじめに
最初に言っておきます。わかりにくいかも。ごめんて。
内容は他で参考になったものを入れつつ自分なりに意訳してるとこもあります。
デザインテーマと設計原則はできるだけ一行くらいで説明するように努力してます。## デザインテーマ
### 明快さ
デザインの重点は機能性。スペース、色、フォント、グラフィックスをシンプルに。### 尊敬
コンテンツが引き立つようにベゼル、グラデーション、ドロップシャドウの使用を最小限に。### 奥行き
モーダルやプッシュの使い分けによって機能へのアクセスや探索の補助を行う。## 設計原則
6つの設計原則が設定されています。
他のUIについての本でも書かれているような、特に重要なものに星を振りました。### 美的整合性
アプリに準じたUI/UXを意識する。
基本は機能を分かりやすくする装飾にするべきであり、ゲームは没入感をますように世界観を提示する。### ★一貫性
統一された色分け、規則性のある遷移、馴染みのあるアイコンなどを利用しユーザーが想定しているものを影響するべき。### 直接操作
スワイプやタ
Content Hugging Priority と Content Compression Resistance Priority を理解する
今回は AutoLayout 関連で、なんとなく使っていて詳しく理解していなかった `Content Hugging Priority` と `Content Compression Resistance Priority` を調べていきたいと思います。
### Content hugging priority とは?
この Priority(優先度) は View が本来のサイズよりも大きくなることに抵抗する度合いを設定します。つまり、この値が大きくなればなるほど、View がそのコンテンツよりも大きくならないようになります。
|View|Content hugging priority|
|—|—|
|UIView|250|
|UITextView|250|
|UIButton|250|
|UILabel|251|
|UIImageView|251|
|UISwitch|750|### Content Compression Resistance Priority とは?
この Priority は View が本来のサイズよりも小さくなることに抵抗する度合いを
【Swift】CoreNFCのコールバック地獄から逃れる
# 地獄から逃れる為のライブラリ作りました。
I've created a library that wraps CoreNFC for use in RxSwift.https://t.co/LRBq9doL9f#iOS #Swift #RxSwift FlutterにFirebase(Firestore)を導入したら、iOSのビルドが遅くなった
# 困ったこと
FlutterにFirebase(Firestore)を導入したら、iOSビルドがとても遅くなった。
元々1分くらいだったのが、10分くらいになってしまった。# 解決法
ios/Podfileに、下記を1行追加した。
`pod ‘FirebaseFirestore’, :git => ‘https://github.com/invertase/firestore-ios-sdk-frameworks.git’, :tag => ‘6.26.0’`サンプル(抜粋)
“`ruby:ios/Podfile
target ‘Runner’ do
use_frameworks!
use_modular_headers!
pod ‘FirebaseFirestore’, :git => ‘https://github.com/invertase/firestore-ios-sdk-frameworks.git’, :tag => ‘6.26.0’
flutter_install_all_ios_pods File.dirname(File.realpatiOSにFirebaseをpodで追加したが、クラッシュしてしまう問題の解決
# 概要
Fabricを利用したクラッシュレポートの送信が、2020年11月15日で使えなくなるようで、
新しいFirebaseへの置き換えを進めてました。https://firebase.google.com/docs/crashlytics/get-started?hl=ja
![スクリーンショット 2020-09-13 8.42.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142886/8f8b87e8-f00e-7438-80ec-d06316a75864.png)プロジェクトは `共有framework` を `アプリ側` で利用する形で、両方とも `firebase` を利用しています。
今までは、それぞれのプロジェクトで pod の追加をしていて、特に問題なく動いていました。“`ruby
use_frameworks!target ‘library’ do
pod ‘Firebase/Core’, `古いバージョン`
pod ‘Firebase/Fi
[Xcode] 実務的Tips: チーム内でXcodeの設定項目を合わせて不要な修正差分が出ないようにする
今日からでもすぐに取り入れられて、
– コードをよりクリーンにできる、とか
– 工数を削減できる、とかそんなTipsを紹介していく記事シリーズです。
「知らなかった」「気づかなかった」「忘れていた」そんな誰かの役に立てば幸いです。# 前提環境
– Xcode 11.3.1
– Swift 5.1.3# 課題
マージリクエスト(プルリクエスト)のレビュー時に、このような空白行の差分が出るとうっとおしくないですか?
![スクリーンショット 2020-09-09 11.14.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122917/d69acc44-a570-25d7-3c14-f3df1fbcc458.png)
# 解決策
Linterライブラリを入れるのも手ですが、そうも行かない場合は、この設定をONにすればだいぶ軽減されます。
Xcode > Preferences > Text Editingタブ > Editingタブ
![スクリーンショット 2020-09-09
[Xcode] 実務的Tips: Storyboard IDの2つの用途
今日からでもすぐに取り入れられて、
– コードをよりクリーンにできる、とか
– 工数を削減できる、とかそんなTipsを紹介していく記事シリーズです。
「知らなかった」「気づかなかった」「忘れていた」そんな誰かの役に立てば幸いです。# 前提環境
– Xcode 11.3.1
– Swift 5.1.3# 割とメジャーなStoryboard IDの用途
こちらの記事にあるように、
画面遷移をコードで行う場合に、StoryboardからUIViewControllerのインスタンスを取得するために使う、という用途です。
[【Swift】画面遷移の方法まとめ – Segueを使わない画面遷移](https://qiita.com/misakiagata/items/b7f6c2f6c9f988ec38c7#3-segue%E3%82%92%E4%BD%BF%E3%82%8F%E3%81%AA%E3%81%84%E7%94%BB%E9%9D%A2%E9%81%B7%E7%A7%BB)# (たぶん)マイナーなStoryboard IDの用途
Storyboard Refer
【Swift】String.SubSequenceとは何か?
# はじめに
文字列の日付を桁揃え(yyyy/mm/dd)しようとして、こんな感じで書いてみたところ・・・“`Swift
let str2 = “2020/7/1”
let array = str2.split(separator: “/”)if (array.count >= 3){
let str3 = array[0]+”/”+String(format: “%02d”, Int(array[1]))+”/”+String(format: “%02d”, Int(array[2]))
}
“`
Int(array[1])) のところで、以下のようなエラーが出ました。“`Swift
Initializer ‘init(_:)’ requires that ‘String.SubSequence’ (aka ‘Substring’) conform to ‘BinaryInteger’
“`# String.SubSequenceとは?
String.SubSequenceって何?ってことで[公式ページ](https://developer.apple
本日学んだ、オプショナル型の基礎。【 ! の混同】
本日学んだ、オプショナル型の基礎をまとめます。
自分用の記録用の皮算用。## ! を混同していた。
> “!”はオプショナルではない、nilを許さないというのは間違いです。
このことも勘違いしている人が多いかもしれません。勘違いしていました。
> **変数の宣言で型に `! `をつける場合、その変数は「オプショナル型」**
なので、**強制的アンラップの` ! `とは別物**らしい。
“`swift
// 変数の宣言で型に ! をつける場合、その変数は「オプショナル型」
// (= 強制的アンラップの ! とは別物)
var hoge: String! // nil
“`## 暗黙的アンラップ型 (= IUO)
**I**mplicitly **U**nwrapped **O**ptional
– `オプショナル型`の1つ (= nliを許容)
– **使用するとき、必ず強制的アンラップ**`!`をする。
– つまり、**自動でアンラップ**をしてくれる但し、**nilでアンラップすると、アプリが落ちる**?ため、
100%絶
CartoonGANをiOS用に変換して、アニメ風自動変換してみました
2018年に発表されたモデルのTensorFlow2実装から変換します。
**写真をアニメ風に変換できる機械学習モデルです。**
なんとiOS上で使うことができます。
機械学習がモバイルで使えるとは、便利な時代になりましたね。[論文](https://openaccess.thecvf.com/content_cvpr_2018/papers/Chen_CartoonGAN_Generative_Adversarial_CVPR_2018_paper.pdf)
[変換済みCoreMLモデル:GitHub](https://github.com/john-rocky/CoreML-Models)
![Aug-29-2020 23-31-13.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/6f09bc27-bd6a-ddd7-4e01-8640280b0c6e.gif)
iOSでの実行結果
![cover.gif](https://qiita-image-store.s3.ap-north
[SwiftUI サンプルコードあり] 入れ子構造になったJSONをMVVMモデルを使って表示する方法
this article shows **How to parse nested JSON on SwiftUI MVVM model.**
if you can not read Japanese, you should use a translater. I’ve published Code on GitHub. check this out.
if you have any question, you can keep in touch with me from my [Twitter (tkgshn)](https://twitter.com/tkgshn)
## はじめに
SwiftUIを使って、入れ子構造になっているJSONファイルをパ
iPad画面サイズ、ピクセル数早見表
| 機種名 | ハードウェア名 | 画面サイズ | CSSピクセル | デバイスピクセル | デバイスピクセル比 | アスペクト比 | 発売初期搭載iOS | 最終対応iOS | 発売年 | メモ |
| :—————————— | :——————————— | :——— | :———- | :————— | :—————– | :———– | :————– | :———- | :—– | :— |
| iPad | iPad1,1 | 9.7 | 768×1024 | 768×1024 | 1 | 3:4
Inside Flutter Hooks
## 概要
Flutter Hooksを使う機会があり、すごい便利だなと思っていたのですが、
内部的にどんな風に実装されているのか掘り下げてみようかと思い、今回色々調べてみました。
(何か間違っていたりしたらコメントいただけると嬉しいです :bow: )## Flutter Hooks とは?
[React hooks](https://ja.reactjs.org/docs/hooks-intro.html)をFlutterで実装したものになります。
作者は[Provider](https://github.com/rrousselGit/provider)等でおなじみのRemiさんです。
##
iOSのdidBecomeActive/willResignActiveを視覚的に把握する
# モチベーション
ライフサイクルメソッドの説明は、解説付きでケースを列挙されることが多いですが、いまいちイメージがしにくいと感じることが多く感じます。特に、ActiveとInactiveのタイミングは分かりにくいことが多いのではないでしょうか。この記事では、Sceneベースの各種ライフサイクルメソッドにprintを貼って、active/inactiveとはどのようなステートなのかを視覚的に把握します。(※タイミングの列挙はしません。1つ2つ取り上げるだけです)
# 解説
## 1. アプリの起動
![スクリーンショット 2020-09-12 15.00.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114709/bbc2d28b-f733-71b9-9629-53ddc0383697.png)## ライフサイクル
シーンベースのライフサイクルでも、共通系は呼ばれます。なので`didFinishLauching`がまず始めに呼ばれます。
次に、`SceneDelegate`の`willC
コードでSwiftのautolayoutを書く
Storyboardで画面のレイアウトやUI部品をグラフィカルに配置できますが、チームで協同作業する時や細かいレイアウトの調整が発生する場合はStoryboardだとどうしても支障が出ます。
autolayoutの標準APIについて、Appleが`NSLayoutConstraint`と`NSLayoutAnchor`(ios9~)、`Visual Format Language(VFL)`を提供しています。`NSLayoutAnchor`は`NSLayoutConstraint`よりコード量が少なくなり、制約・声明もはっきりするようになっています。`VFL`はアスキーアートのように制約を定義することができる記法ですが、学習コストが高くかつリテラルな箇所が多いため、実行時にエラーが起こる恐れがあります(本文では`VFL`パターンを紹介しません)。
##1、NSLayoutConstraint
>NSLayoutConstraintを使用するには、各々初期化する必要があります。
制約する属性ごとに`NSLayoutConstraint`を作る必要があるため、コード量が増えます。
初期
Core Imageによるぼかしのクオリティを高める
Core Imageを使うと、簡単かつ高速に画像ぼかすことができます。
(↑はgif化しているので見た目がいまひとつですが…)ぼかし自体は `CIGaussianBlur` ひとつでできるのですが、以下の点に注意しておくことでより高いクオリティの結果を得ることができます。
* ぼかし後の画像サイズは、入力画像サイズと異なる
* なにもしないと、画像のエッジ付近がやや暗くなってしまう## `CIImage#extent` について
`CIImage#extent` は簡単に言うと、その画像のサイズを持つ出力矩形領域です。
例えば解像度480×640の画像から作られた `CIImage` の `extent` は `(x: 0, y: 0, w: 480, h: 640)` となります。
しかしこれに、半径 `20
Core Dataのtransformableな属性をセキュアに実装する
Core Dataのエンティティが持つ属性 (attribute) の型は整数、文字列、日付などいくつかの決まったものしかとることができませんが、Transformableを指定することで任意の型を `NSData` に変換して保存することができるようになっています。このとき保存したい型と `NSData` の変換を担うのがvalue transformerです。
Core Dataのtransformableを利用しているプロジェクトをXcode 12でビルドしたときに、以下のような警告が出るようになりました。
“`
warning: Misconfigured Property:.<プロパティ> is using a nil or insecure value transformer. Please switch to NSSecureUnarchiveFromDataTransformerName or a custom NSValueTransformer subclass of NSSecureUnarchiveFromD
SwiftUI用のジョイスティックUIライブラリ OMJoystickの使い方
OMJoystickはSwiftUI用のジョイスティックUIライブラリです。CocoaPodsとSwift Package Managerからダウンロードできます。
### 動作イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4019/08f6f1e3-439b-a813-9cdd-d5e87930e9b0.png)### インストール方法
CocoaPodsでPodfileに下記のように記述します。`pod ‘OMJoystick’`
### 動かし方
以下のコードで、デフォルト設定のまま動かすことができます。
“`swift
import SwiftUI
import OMJoystickstruct ContentView: View {
var body: some View {
OMJoystick(colorSetting: ColorSetting()) { (joyStickState, stickPosition)
RxSwift における subscribeOn と observeOn の違い
RxSwift などで処理をつなげて書いていると、ここはメインスレッドで、ここはバックグランドスレッドでなどと、処理によってスレッドを切り替えたい場合があるかと思います。そんな時は、`Observable` のプロパティとして提供されている `subscribeOn` または、`observeOn` を使用することでスレッドを切り替えて処理を実行することができます。今回はそんな `subscribeOn` と `observeOn` の違いについて簡単にまとめていこうかと思います。
### その前に Scheduler
RxSwift では Observable や subscribe の処理をどのスレッドでどのよう(直列・並列)に処理をさばくかを決定する役割を `Scheduler` と呼びます。これについては後で触れますが、RxSwift を使用し、マルチスレッドで処理