- 1. 独自プロパティリスト(plist)を利用する
- 2. 今更ながらReact Nativeに入門してみた①
- 3. Swift4以降のKVOについて
- 4. Xcodeで古いOSバージョンのSimulatorを起動する
- 5. 【Swift】CAGradientLayer の透過が濁る
- 6. 【SceneKit】3Dモデル(アニメーションつき)の再生速度を変更する
- 7. 日本で買ったApple Watchで、ECGを使って心電図を撮る夢を見た
- 8. MVVMについて簡単なまとめ
- 9. 【Flutter】バグ解決: Bad state: Stream has already been listened to.
- 10. iOSのWebViewをMacでデバッグする
- 11. ARKit 3.5のScene Reconstructionサンプルのコードを読む
- 12. 【悲報】Xcode 11.4 でナビゲーションバーのタイトルの色が黒に固定される(*条件あり)
- 13. 【初心者向け】【まとめ】iOSアプリを作ろうとしている方がまず見るべきQiitaの記事をまとめてみました【Swift】
- 14. Vue.js×TypeScriptでのテキストコピー(iOS対応)
- 15. 【Xcode】CocoaPods で複数ライブラリを導入したらハマった話
- 16. Swiftでiosアプリ開発【個人記録】
- 17. 初心者によるRxSwiftのデモ
- 18. iOSアプリのMultitasking対応について
- 19. アプリ申請自動化とAppleID2ファクタ認証
- 20. Firebase Crashlyticsの導入
独自プロパティリスト(plist)を利用する
iOSアプリで独自plist(プロパティリスト)を作って使いたい時のメモ。
※よくある、APIのURLとかその他アプリに特化した設定などに使用
※他の方がわかりやすく書いてくれているのもあるのでメモ程度## plistの作成
まずはお目当てのplistを作成します。* File→New→File(cmd+N)で新規作成画面を表示
* Property Listを選択、名前(今回はApp.plist)を決めて作成作成できたら、適当に値を設定しましょう。
今回はよくあるURLを記載します## 作ったplistの読み込み
先程作ったApp.plistを読み込むコードが以下になります。“`swift
var property: Dictionary= [:]
// App.plistのパス取得
let path = Bundle.main.path(forResource: “App”, ofType: “plist”)
// App.plistをDictionary形式で読み込み
let configurations = NSDictiona
今更ながらReact Nativeに入門してみた①
# はじめに
実は最近、**React Native**なるものに入門してしまいました…。
React Nativeとはなんなのか?といったところの説明から、実際に簡易的なTODOアプリを作成するところまでご紹介できればと思います。
では、早速行ってみましょう〜!
# React Nativeとは何か
React Nativeとは、
**Reactを使って、iOSやAndroidなどのネイティブアプリを開発することができるクロスプラットフォームな開発ができるフレームワーク**です。
公式サイトは[こちら](https://reactnative.dev/)
# なぜReact Nativeで作るか
個人的にメリットだと感じる点はいくつかあります。
1. React(JavaScript)で書ける
2. プラットフォームを意識せず開発できる普段JavaScriptでバックエンドやフロントエンドを書いている自分にとって、同じような感覚でネイティブアプリも作れてしまうのは非常に魅力的です!
また、本来であればiOSならSwift、AndroidならKotlinな
Swift4以降のKVOについて
## はじめに
KVOとは`Key-Value Observing`の略で、対象のObjectの値を監視し、変更のタイミングで通知を行ってくれるものです。
とても簡単に特定の値の監視を行うことができますので、今回はその使い方についてまとめてみました。## KVOの使い方
### 監視の登録方法について
Objectの値の監視を登録するには`observe(_:options:changeHandler:)`を使用します。
各引数の説明を簡単に行います。“`
func observe(_ keyPath: KeyPath , options: NSKeyValueObservingOptions = [], changeHandler: @escaping (T, NSKeyValueObservedChange ) -> Void) -> NSKeyValueObservation
“`– `keyPath` : `KeyPath`形式で監視したいObjectの値を指定
– `options` : 変更前後、どの値を通知しても
Xcodeで古いOSバージョンのSimulatorを起動する
XcodeはそのXcodeがリリースされたときの最新のOSバージョンのSimulatorが用意されているが、そのXcodeを使いつつ古いOSバージョンのSimulatorを起動するためには一手間必要なので、その手順をメモしておく
# 環境
Xcode 11.4# 手順
Xcodeのメニューから Window > Devices and Simulators を選択する「Simulators」タブを選択することでシミュレータ一覧画面が表示されるので、左下の「+」ボタンをクリックする
![01_デバイスとシミュレータ画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125334/4f023b3f-1793-adf1-389f-3ab3cd71faf8.png)以下のようなシミュレータ追加画面が表示されるので、「OS Version」をクリックして選択肢を表示する
【Swift】CAGradientLayer の透過が濁る下記ブログの転載です!
iOSにて、**`CAGradientLayer`** を使って透過を含むグラデーションを行った際、濁る現象があったので対応の備忘録。
## CAGradientLayer の使い方
*CAGradientLayer* の基本的な使い方については、[こちら](https://developer.apple.com/documentation/quartzcore/cagradientlayer) を参照のこと。
## CAGradientLayer に透過を利用すると色が濁る
当然のことながら `CAGradientLayer` はグラデーションを作成するレイヤーです。
「そこで、透過から赤へのグラデーションを作ろう!」と思った時、グラデーションが濁る(中間色がグレーになる)ことに気がつきました。
下記がその時の画像です。![汚い透過グラデーション](https://rc-code.info/wp-content/uploads/2019/06/alphaGr
【SceneKit】3Dモデル(アニメーションつき)の再生速度を変更する
# はじめに
アニメーションつき3Dモデルの再生速度をを可変にしたかったので、そのメモ。# 実行環境
– Xcode 11.2.1
– [MagicaVoxel](https://ephtracy.github.io) 0.99.4
– [Mixamo](https://www.mixamo.com)
– iPhoneXR(iOS 12.1.4)# やりたいこと
[Mixamo](https://www.mixamo.com)でアニメーションをつけた3Dモデルの、再生速度(テンポ)をゆっくりにしたり、速くしたり、任意に変更してみたかった。# 再生速度をどこで変更できるか?
読み込んだ3Dモデル(Salsa Dancing.dae)から変換したSCNファイル(salsa.scn)を開いて、ボーンの設定(mixamorig_Hips)を選択すると、右下の「Animation Settings」に「speed」という項目があって、この数値を変更して画面下の再生ボタンを押すと再生速度が変わります(speed:1 が定速)。
![cap01.png](https://qiita-im
日本で買ったApple Watchで、ECGを使って心電図を撮る夢を見た
タイトルの通り、日本で買ったApple Watch(series4)のECGを有効にしてみました。
“`
この方法は正規の手段ではありません。
2020年3月現在、日本では依然として医療機器認可は下りていません。
“`**あくまで夢の話です。悪しからず**
※ちなみに脱獄とかそういう類ではありません。
# 結論
できました。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265811/80ab4c8e-2643-2136-283f-c9ddc9979f7c.png)
↑販売国コードはJ(Japan:日本)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265811/1ceca5aa-cbd3-22c0-b50e-99c56f989e47.png)
# アクティベートする方法
アクティベートの手順です。が、**注意点**。
### 注意点
詳しくは後述しますが、ECG
MVVMについて簡単なまとめ
## Model
アプリケーションで使うデータの基本的な振る舞いやそれに関するロジックを保持
### 具体的には、
– データ構造の表現
– Web APIとのやりとり
– ローカルデータベースなどへの保存## ViewModel
– ModelとView、ViewController層の仲介役
– Modelからデータを受け取り、それらをUIに反映できるような形で出力
– View、ViewControllerからユーザーのアクション情報を受け取り、Modelに伝え、Modelからデータを受け取りUIに反映できるような形で出力## View、ViewController
### View
– UIの表示
– データを表示するようなUIの場合、Controllerからデータを受け取り、UIに反映
– ユーザーインタラクションの認知し、必要に応じてUIを更新する。
– もしくは、そのユーザーインタラクションをした結果、何かアクションをしたいとき、ユーザーインタラクションの情報をControllerに伝達する。
– View層はデータ構造に関する一切のロジックを保持しない。#
【Flutter】バグ解決: Bad state: Stream has already been listened to.
## 今回の件のGitHubはこちら
https://github.com/Tetsukick/flutter_BLoc/commit/76748e912be5896f8e998a5a50244fcb77d659b6## 現象
StreamControllerを使ってBLoCパターンでstatement管理をしていたが、TabBarViewを追加して、
Tabを切り替えて、再度同じタブに復帰した際に画面の表示が崩れるようになりました。その際のerrorがこちら。
“`
Bad state: Stream has already been listened to.
“`## 解決策
`StreamController`ではなく、`BehaviorSubject`を使用することで解消
元のソースコード
“`dart:エラー解消前
import ‘dart:async’;class CounterBloc {
// input
final _actionController = StreamController();
Sink
iOSのWebViewをMacでデバッグする
# はじめに
以前Webブラウザー作っていた時、一番困ったのが「Safariで動くのにこのブラウザーでは動かない!!」というお問い合わせでした。
そんな時、お世話になった”Webインスペクタ”の使い方を記事にすることで、誰か救われたらいいなーと思い書くことにしました。# 必要なもの
* Mac端末(当時Yosemiteでやってたので、それなりに古くても大丈夫だと思います)
* iOS端末(当時iOS 8でやってた記憶があるので、それ以降ならできます)
* MacとiOSを接続する設備(MacによってはUSB typeCしかないので変換アダプタだったり必要かと)# 手順
1.iOSの[設定]アプリでSafariのWebインスペクタを有効化
![Webインスペクタ有効.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96952/63868b3b-6595-44b1-5f3b-71423effc23f.png)2.MacのSafariで「開発」メニューを表示する
![開発メニュー有効.png](h
ARKit 3.5のScene Reconstructionサンプルのコードを読む
ARKit 3.5とLiDAR搭載の新型iPad Proが出ましたね。これらを試せるAppleの公式サンプル「[Visualizing and Interacting with a Reconstructed Scene](https://developer.apple.com/documentation/arkit/world_tracking/visualizing_and_interacting_with_a_reconstructed_scene)」のソースコードを読んでみたメモです。
どんな感じのサンプルかはこちらのツイートの動画がよくわかります。
First look at the iPad Pro LiDAR Scanner pic.twitter.com/kwkl1YBy2n
— Tim Field (@nobbis) 【悲報】Xcode 11.4 でナビゲーションバーのタイトルの色が黒に固定される(*条件あり)
それはXcodeをアップデートした直後のことでした・・・
俺氏「ん?!ナビゲーションタイトルの文字が黒にしかならんやんけ?」
#発生条件
– storyboardでnavigation controllerのBar Tintを変更している場合上記場合に、Title Colorを変更しても、タイトルの色は黒固定になっちゃいます。
Bar Tintをデフォルトにしとけばタイトルカラーを変更できます。
【初心者向け】【まとめ】iOSアプリを作ろうとしている方がまず見るべきQiitaの記事をまとめてみました【Swift】##iOSアプリのためのまとめ記事が欲しかった
iOSエンジニアになって早8ヶ月。
最近ようやく慣れてきたものの、初めは実装するのにとっても時間がかかりました。
というのは、**実装についてまとまったオールインワンの記事があまりなかった**ことがもしかしたら原因なのかもと思っています。(自分でもっと勉強しろって話かもしれないですが…)
なので、今回は、自身が開発をしていく上で参考にした記事をまとめてみたいと思います。
これからiOS開発をする方に参考になればと思っています。
##参考になるかもしれないソースコード
この記事を作っていくにあたって、以下の記事を参考にして実装したものを載せています。
これを見ながら記事と共に勉強していただければ幸いです。
https://github.com/taichi6930/iOSAppBase/tree/master
##早速見るべき記事
###ライフサイクル
iOSアプリがどのように動いているか、といった感じです。
作る際にここがわかっていないと「??」となりまくってしまいます(自分がそうでした)。アプリ作成前に一
Vue.js×TypeScriptでのテキストコピー(iOS対応)
Vue.js×TypeScriptで「ワンタップでテキストをコピーする」ボタンを作ったらハマりポイントがたくさんありました。
生jsやjQueryでの解決策はたくさん見つかりましたが、Vue.js×TSは見つからなかったのでメモです。# やりたいこと
フォームに文字入力した時に、飾り文字を追加した文章を出力して、ワンタップでコピーできるようにする。
![recipe formatter qiita.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267607/f93adf2c-d010-4c90-5492-1f7cc419cbc9.gif)
# 完成したコード
“`vue
.CopyText
button(@click.prevent=”copyTexts”)
span.copy-message クリップボードにコピー
.formatted-text
spa【Xcode】CocoaPods で複数ライブラリを導入したらハマった話
## はじめに
個々のサンプルプロジェクトでは問題なく動いていたのに、1つのプロジェクトにライブラリをまとめたらハマってしまったので、原因と対策をメモしておきます。## 発端
イーサリアム用のライブラリと、AWS 用のライブラリのサンプルをそれぞれ試して導入の目処がたったので、下記の **Podfile** にて、開発中のプロジェクトへ導入しました。“`:Podfile
source ‘https://github.com/CocoaPods/Specs.git’
platform :ios, ‘10.2’target ‘AppEnv’ do
use_frameworks!
pod ‘web3swift’
pod ‘AWSAppSync’
pod ‘AWSS3’
end
“`で、サンプルのコードを開発プロジェクトへ取り込んでコンパイルしたところ、**web3swift** 関連コードでエラーが発生。「あれ?」と思ってフレームワークを見てみると、なぜか頭が大文字にリネーム(?)された **Web3swift** に差し変わっていてポカン
Swiftでiosアプリ開発【個人記録】
#概要
[「たった2日でマスターできるiPhoneアプリ開発集中講座 Xcode 11 Swift 5対応」](https://ticklecode.com/swiftbook2019/)
に沿って、Swiftでのiosアプリ開発を学習してみることにしました。その記録用です。#じゃんけんアプリ
#楽器アプリ
###パーツの配置
楽器アプリには、シンバル、ギター、Play、Stopというパーツがある。
それぞれ、のパーツは押すことによってプログラムが動作することが要求されるため、パーツはそれぞれButtonである。###使う画像をAssets.xcassetsに格納する
これで、プログラムやAttributesInspectorから画像を呼び出せるようになる。###パーツを配置する
AttributesInspectorから+ボタンで、配置したいパーツを選択し、それをドラッグ&ドロップで配置していく。
初心者によるRxSwiftのデモ## RxSwiftとは
RxSwiftの前身はMicrosoftが開発した.NET用のライブラリ「Reactive Extensions」です。このReactive Extensionsの概念が有効だったため、数々のプログラミング言語へと移植されました。その中でSwiftに移植されたのがRxSwiftです。
## リアクティブプログラミングとは
リアクティブプログラミングとは「値の変化」と、それに対する「振る舞い」の関係を宣言的に記述するプログラミングの一種です。
例えばボタンを押すとラベルの文字が変化する、のようなユーザーインタラクティブなシステムや、通信処理などの非同期処理などで簡潔にかけるため特に有用です。数々の言語へ移植されている点がその有用性の証明とも言えます。SwiftではiOS13専用で公式より[Combineというフレームワークがリリース](https://developer.apple.com/documentation/combine)されましたが、これはRxSwiftの概念を多く真似して作られているようです。
Combineを理解するための前提として
iOSアプリのMultitasking対応について
## はじめに
WWDC2019にて2020年4月までにMultitaskingをサポートすることが必須と発表されました。
そして今年1月、必須ではないにしてもMultitaskingをサポートすることを **強くお勧めする** とアナウンスがありました。
もちろん対応しなければアプリをリジェクトされるわけではありませんが、今後Multitaskingが重要となっていくことは明らかです。
そこで今回はMultitaskingの対応方法および、注意すべき点についてまとめていきます。
[iPhoneとiPadに適したユーザーインターフェイスの構築](https://developer.apple.com/jp/news/?id=01132020b)## Mutitasking設定方法
1. `Requires full screen`にチェックが入っている場合は外します
アプリ申請自動化とAppleID2ファクタ認証# はじめに
2019年にAppleDeveloperProgramのAppleIDは2ファクタ認証が必須となりました。(AccountHolderというもっとも権限を持つアカウントのみ)この2ファクタ認証が有効になることにより、
CIサービスを用いたアプリ申請自動化にどのような影響が出るのか
またその回避策を改めてまとめた記事です。この記事はfastlaneを中心に情報をまとめます。
# 2ファクタ認証 OFFが最もシンプル
はじめに述べてしまいますが、
もっともシンプルな解決策は2ファクタ認証を有効化**していない**アカウントを用意することです。
運用上、それが難しい方がこの記事でなんらかの解決策を見出して頂けると嬉しいです。# 前提情報
### アプリ申請の手順
今回はアプリ申請に関わる手順を以下のものとします。1. ipaファイルをAppstoreConnectにアップロード
2. ストア情報のアップロード (説明文やスクショ等)
3. 再コンパイルの完了を待つ
4. アプリ審査提出
5. 再コンパイル後のdSYMをダウンロード
6. firebase等にd
Firebase Crashlyticsの導入
## 思ったこと
– Firebaseのドキュメントが古かった。
– https://firebase.google.com/docs/crashlytics/get-started?hl=ja
– 最初にみたドキュメントが古くて、同じことを2回やる羽目に
– Xcodegenの対応
– XcodegenだとprebuildScriptsのscriptがcocoapodsのスクリプトよりも前に呼ばれて、エラーが出る問題
– https://qiita.com/gin0606/items/3935027fef9597ddf6e7
– W/A的に対応したけど、もっといい方法がありそう。。。## ドキュメント
– 一番新しいやつスタートガイドライン
– https://firebase.google.com/docs/crashlytics/get-started-new-sdk?platform=ios&authuser=1
– Fabricから移行するとき
– https://firebase.google.com/docs/