- 1. トレイトコレクションとレイアウト
- 2. レイアウト実装パターン
- 3. 崩れたレイアウトの調査方法
- 4. iPhoneをiOS13.3にアップデートしたらdyld_shared_cache_extract_dylibs failureとエラーが出て実機にアプリをインストールできなくなった
- 5. UIViewのisHiddenをアニメーション化する
- 6. Xcode11で導入された$(MARKETING_VERSION)をXcodeGenで設定する
- 7. AV Foundation Foundationの設計思想と概念
- 8. オススメAdBlockツールまとめ(Chrome, Android, iOS対応)
- 9. WKWebView 遇到 target=”_blank” 的處理
- 10. Realmの基本的な操作
- 11. Flutterウィークリー #87
- 12. Flutterウィークリー #86
- 13. IFTTTのリッチ通知から任意のiOSショートカットを起動する
- 14. 急にiOSアプリ開発(未経験)の仕事が来たのでパッケージマネージャ何がいいねんに立ち向かう
- 15. ExpoのPermissions周りを実機検証してみる
- 16. Swiftで連絡先アプリに連絡先を追加する
- 17. 【解決済み】SWIFT_VERSION ‘5.0’ is unsupported, supported versions are: 3.0, 4.0, 4.2の対処法
- 18. 【swift5】現在地を取得した天気アプリ
- 19. スプレッドシートを使って、iOS開発の効率を上げる
- 20. iOS&Firebase 初めの一歩:iOSアプリのプロジェクトでFirebaseを使ってみる
トレイトコレクションとレイアウト
趣味でiOSアプリ開発をかじっていた自分が、改めてiOS開発を勉強し始めた際に、曖昧に理解していたところや知らなかったところをメモしています。いつか書き直します。
## 参考文献
この記事は以下の書籍の情報を参考にして執筆しました。
– [よくわかるAuto Layout iOSレスポンシブデザインをマスター](https://www.amazon.co.jp/%E3%82%88%E3%81%8F%E3%82%8F%E3%81%8B%E3%82%8BAuto-Layout-iOS%E3%83%AC%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B7%E3%83%96%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%82%92%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC-%E5%B7%9D%E9%82%89-%E9%9B%84%E4%BB%8B/dp/4865940324/)
#トレイトコレクション
トレイトコレクションは表示に関わるアプリの状態管理をしていて、レイアウトを決定するための情報を提供してく
レイアウト実装パターン
趣味でiOSアプリ開発をかじっていた自分が、改めてiOS開発を勉強し始めた際に、曖昧に理解していたところや知らなかったところをメモしています。いつか書き直します。
## 参考文献
この記事は以下の書籍の情報を参考にして執筆しました。
– [よくわかるAuto Layout iOSレスポンシブデザインをマスター](https://www.amazon.co.jp/%E3%82%88%E3%81%8F%E3%82%8F%E3%81%8B%E3%82%8BAuto-Layout-iOS%E3%83%AC%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B7%E3%83%96%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%82%92%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC-%E5%B7%9D%E9%82%89-%E9%9B%84%E4%BB%8B/dp/4865940324/)
##下記のレイアウトの実装方法について書いてます
##グループ化
UIの部品をUIViewによりグループ化し、中身のコンテン
崩れたレイアウトの調査方法
趣味でiOSアプリ開発をかじっていた自分が、改めてiOS開発を勉強し始めた際に、曖昧に理解していたところや知らなかったところをメモしています。いつか書き直します。
## 参考文献
この記事は以下の書籍の情報を参考にして執筆しました。
– [よくわかるAuto Layout iOSレスポンシブデザインをマスター](https://www.amazon.co.jp/%E3%82%88%E3%81%8F%E3%82%8F%E3%81%8B%E3%82%8BAuto-Layout-iOS%E3%83%AC%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B7%E3%83%96%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%82%92%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC-%E5%B7%9D%E9%82%89-%E9%9B%84%E4%BB%8B/dp/4865940324/)
##レイアウトが崩れる原因
レイアウトが一意に定まっていない、曖昧なレイアウト。
意図しない制約が反映されてしまう、制約のコン
iPhoneをiOS13.3にアップデートしたらdyld_shared_cache_extract_dylibs failureとエラーが出て実機にアプリをインストールできなくなった
タイトルの通り、ios13.3にアップデートしてxcodeでアプリをビルドしようとしたところ、dyld_shared_cache_extract_dylibs failureというエラーが出て困った話。
![ab15a03148368c673af9c4f15ae6c8f1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296645/b5cc17e7-c408-a467-2547-17f4611ab9ae.png)#環境
iOS 13.3
Xcode 11.3#解決法
1. [https://github.com/filsv/iPhoneOSDeviceSupport](https://github.com/filsv/iPhoneOSDeviceSupport) にアクセスする。2. ページ下部の13.3.zipをダウンロード&解凍。
業務で少しハマったのでメモ。
## 問題点
API通信成功時のみ、View(仮に`mainView`とする)内のコンテンツを表示させたかった。
→ `mainView`の上に`emptyView`という別のViewを載せ、API通信成功後、Bをフェードアウトさせるようにしたい。“`swift
emptyView.isHidden = true
“``isHidden`プロパティはアニメーションしないため、API通信成功後などに`emptyView`を消そうとすると、見た目上、突然`emptyView`が消滅したかのように見えてしまう。
## 解決方法
`UIView.animate`を使った実装にして、alpha値でフェードアウトするように見せた。
“`swift
UIView.animate(withDuration: 0.3, animations: {
self.emptyView.alpha = 0
}, completion: { _ in
self.emptyView.isHidden = true
})
“`
Xcode11で導入された$(MARKETING_VERSION)をXcodeGenで設定する
# 起きた現象
Xcode11からInfo.plistの`Bundle versions string, short`という項目がバージョン直書きではなく`$(MARKETING_VERSION)`という項目を参照するようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56178/22282879-73a9-e9eb-2f30-b911edffb781.png)
この値はプロジェクトファイル(.xcodeproj)に保存されているらしく、何も設定せずにXcodeGenを実行すると消えてしまっていた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56178/ae07b1d7-bf65-ce07-c4bc-85a55a26de57.png)
## 結論
変数としてproject.ymlに設定する。
“`yml
settings:
MARKETING_VER
AV Foundation Foundationの設計思想と概念
### はじめに
AV Foundationについてどういう設計思想/概念で成り立っているか調査した。
### オブジェクト図から明らかになるドメインモデル
オブジェクト図である。関係が複雑であみの目の様になっているが、以下の通りに分類するとAV Foundationの設計思想が分かる。
* 紫:再生制御
* AVPlayer
* AVP
オススメAdBlockツールまとめ(Chrome, Android, iOS対応)
広告がうざいならAdBlockツールを入れましょう。
紹介するのは全て私が1年以上使用しているAdBlockツールです。### Chrome
[uBlock Origin](https://chrome.google.com/webstore/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm)
– GPLv3
– 無料で使えます。
– [参考記事](https://qiita.com/AKKYM/items/e09e80bc8c30e189524d)### Android
[DNS66](https://f-droid.org/en/packages/org.jak_linux.dns66/)
– GPLv3
– 無料で使えます。
– アプリ内の広告を消すことができます。
– [参考記事](https://qiita.com/AKKYM/items/b27046395ef722cdb2d5)### iPhone
[AdBlock](https://apps.apple.com/jp/app/adblock
WKWebView 遇到 target=”_blank” 的處理
如果有發現程式碼又問題歡迎留言告訴我!
## 前言
因為點了 WKWebView 中網頁的超連結發現他沒有反應,才發現這需要另外處理。
## 環境
Xcode 11.3, Swift 5, Storyboard
## 一些些前導知識
普通的超連結不需要手動處理, WKWebView 就會自己幫我們導到下一個頁面了。
### target=”_blank”
是 HTML 裡面 a (錨點, anchor) 標籤中,用來指定這個超連結應該要開一個新的視窗。
如果不加這個屬性,如下,就會在同一個頁面導向下個頁面。
“` html
Apple
“`如果加了該屬性,原先的頁面就不會有任何動作,在一般的瀏覽器就會幫你開一個新的視窗。
“` html
Apple
“`#### 參照
https://www.w3schools.com/tags/att_a_target.asp
> _blank
> O
Realmの基本的な操作
## なぜこの記事を書いたか
つい最近まで仕事でiOSアプリを開発していたんですけど、ニートになったんで暇だから以前触っていたRealmについて忘れないように
備忘録というか、運動後のストレッチ的な感覚で適当につらつら書いていきます。
ニートは好きなこと何でも出来ていいですね。## Tableの作成
RealmではTableって言わないでModelって言うんだっけか・・・?
基本的には[Realm](https://realm.io/docs/swift/latest/)←ここに書いてあることですが、import RealmSwift
class HogeEntity: Object {
@objc dynamic var not_optional_bool = false // 非OptionalなBool
let optional_bool = RealmOptional() // OptionalなBool @objc dynamic var not_optional_in
Flutterウィークリー #87
# Flutterウィークリーとは?
FlutterファンによるFlutterファンのためのニュースレター
https://flutterweekly.net/この記事は#87の日本語訳です
https://mailchi.mp/flutterweekly/flutter-weekly-87※Google翻訳を使って自動翻訳を行っています。翻訳に問題がある箇所を発見しましたら編集リクエストを送っていただければ幸いです。
# 読み物&チュートリアル
### 競合するフレームワーク:AlibabaがSDK Flutterをテストします
https://hackernoon.com/competing-frameworks-alibaba-puts-sdk-flutter-to-the-test-88eb8cf1f35a?gi=1c0291fc55a3FlutterとReact Nativeを比較するためにAlibabaチームが実行したパフォーマンステストに関する興味深い記事。
### Flutterアプリを設計するための初心者向けガイド
https://medium.
Flutterウィークリー #86
# Flutterウィークリーとは?
FlutterファンによるFlutterファンのためのニュースレター
https://flutterweekly.net/この記事は#86の日本語訳です
https://mailchi.mp/flutterweekly/flutter-weekly-86※Google翻訳を使って自動翻訳を行っています。翻訳に問題がある箇所を発見しましたら編集リクエストを送っていただければ幸いです。
# 読み物&チュートリアル
### Flutter Firebaseチートシート!
FlutterのFirebaseの基本的な使用法をカバーする便利なチートシート。
### Dart宣言サイトの差異
https://medium.com/dartlang/dart-declaration-site-variance-5c0e9c5f18a5進行中のDart機能であるDart分散に関するKallen Tuの興味深い記事。
### F
IFTTTのリッチ通知から任意のiOSショートカットを起動する
# はじめに
iOSのショートカットは、ショートカットのURLスキームを使って外部から任意のショートカットを起動することができます。
ここでは、リッチ通知から任意のショートカットを起動する方法について説明します。# 前提
* iOSショートカットアプリが必要です。
* また、通知から起動する任意のショートカットを事前に作成する必要があります。
* IFTTTから通知を受信するために、IFTTTアプリのインストールが必要です。# ショートカットのURLスキームの仕様
[URLスキームを使用してショートカットを実行する](https://support.apple.com/ja-jp/guide/shortcuts/apd624386f42/ios)のドキュメントに記載されていますが、以下のURLスキームを開くことで任意のショートカットを起動することができます。
“`
shortcuts://run-shortcut?name=Make%20PDF&input=text&text=soup
“`nameにショートカット名を指定するのですが、URLエンコード
急にiOSアプリ開発(未経験)の仕事が来たのでパッケージマネージャ何がいいねんに立ち向かう
## 背景
タイトルの通りですが、業務でやったことのないiOSアプリ開発の仕事が急に来た。
直近の課題の1つにパッケージマネージャ何使えばいいんだ問題があったのでわからないなりに調べてみた結果と所感をまとめた個人の備忘録です。
間違ってたら優しく指摘ください!(個人ブログも参考にしたので情報古いところあるかも)## 候補
– CocoaPods
– Carthage
– Swift Package Manager## CocoaPods
### 特徴
– 中央集権的なパッケージマネージャ
– [Specs](https://github.com/CocoaPods/Specs)と呼ばれる巨大なリポジトリの中に全てのパッケージ情報を詰め込んでいる(ので中央集権的)
– podコマンドによりパッケージの登録・更新が可能
– OSSで開発されている。Ruby製(なのでgemでMacへインストールする)
– [公式ページ](https://cocoapods.org/)の検索が非常に優秀でライブラリを探しやすいとのこと### メリット
– Webサイトでライブラリを探せる
– Dy
ExpoのPermissions周りを実機検証してみる
## はじめに
Expoでの開発に限らず、iOSアプリでは一部のプライバシーに関わる機能を利用する際、その目的を説明する文言を設定する必要があります。設定した説明文は、ユーザーに権限を確認するためのダイアログに表示されます。設定が必要な機能については下記のような記事が参考になりました。
**iOS のユーザデータにアクセスするための Info.plist への許可設定まとめ**
**[iOS 10] 各種ユーザーデータへアクセスする目的を記述することが必須になるようです**
Expoにおいてこの説明文(UsageDescription)は`app.json`の`expo.ios.infoPlist`オブジェクトに追加することでカスタマイズできます。
デフォルトだと説明文が存在しない訳ではなく、英語、かつ目
Swiftで連絡先アプリに連絡先を追加する
# はじめに
連絡先アプリから読み込みを行う記事はそこそこありましたが、連絡先を追加する記事はそんなになかったのでメモとして残しておきます。# 環境
以下の環境で動作確認を行いました。– Xcodeのバージョン: Xcode11.3
– Swiftのバージョン: Swift5# 下準備
連絡先にアクセスするためにinfo.plistに以下の項目を追加します。| Key | Value |
| :-: | :—: |
| `Privacy – Contacts Usage Description` | 連絡先にアクセスする理由等を記述 |これがないとエラーになるので忘れずに追加します。
# 連絡先へのアクセス許可を確認
アプリが連絡先にアクセスすることを許可してもらう必要があるので、現在の認証状態を確認してそれに応じた対応を行います。初回の場合はいつものアクセス許可を求めるアラートを表示させたりするのが一般的だと思います。
その際にアラートを出したり、後の連絡先を保存する際に必要になる`CNContactStore`をインスタンス化させておきます。“
【解決済み】SWIFT_VERSION ‘5.0’ is unsupported, supported versions are: 3.0, 4.0, 4.2の対処法
## 解決方法
まず最初に書いておきます。
podを選択
![スクリーンショット 2020-01-07 17.56.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270808/779a0040-c29d-beda-7baa-6c94c2832abe.png)ライブラリを選択して、Swift Language Versionを4.2に選択
![スクリーンショット 2020-01-07 17.56.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270808/66b5446e-9b58-7972-04f3-47a16e28e77f.png)完了
![スクリーンショット 2020-01-07 17.56.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270808/f98a8644-a9aa-9474-f9d1-4e8
【swift5】現在地を取得した天気アプリ
ソースはこちら
https://github.com/sventouz/swift_weatherApp
## 全体像
![スクリーンショット 2020-01-07 17.32.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270808/c8cf47ac-571f-5672-5dcf-9af18491ee01.png)
①は固定。。。
これは位置情報を取得して今いる場所の地名を取得したかったができなかった。
Google Map APIの逆ジオコーディングを使用することで実現可能なので近日中に仕上げたい。②こちらは今日の日付を取得して表示するだけなのだが、時間がなく割愛。ここもあとで実装する。
③ここは変わる。笑
現在地の天気によって画像が変わる仕様になっている。参考のYOUTUBEの動画のかたが親切にもまとめてくださっているので使うと簡単。④どんな天気かが表示される。
⑤現在地の気温。
## アプリの詳細
このアプリは
– Alamofire
– SwiftyJSON
スプレッドシートを使って、iOS開発の効率を上げる
## はじめに
アプリ開発の中でデバッグは時間がかかる作業である。
動的に変わる処理のデバッグはさらに時間がかかる。
AndroidとiOS両プラットフォームで展開しているサービスであるとさらに時間がかかる。
その解決手段としてスプレッドシートを使った方法を紹介します## なぜスプレッドシートを使うのか
– 誰でも容易に変更、閲覧ができる
– 簡単なAPIとして扱える
– プラットホーム関係なしに扱える## 実践してみる
### 準備
– シートを作成
– ファイル → ウェブに公開を選択![Screenshot 2020-01-08 at 12.15.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63985/00d3bfbe-9b8e-514a-4101-de7c647eb652.png)
– 公開範囲を指定する
![Screenshot 2020-01-08 at 12.19.27.png](https://qiita-image-store.s3.ap-northeast-1.
iOS&Firebase 初めの一歩:iOSアプリのプロジェクトでFirebaseを使ってみる
## 対象読者
iOSアプリの作成経験はあるが、Firebaseはまだ使った事がない。
ざっくりとした使用感を掴みたい人。
実プロジェクトで使いそうな要素のみを抽出したサンプルアプリを作成してみる。## 準備
まずはFirebaseにプロジェクトを登録し設定する。### プロジェクト作成
1. 開発用のGoogleアカウントがあれば(無ければ個人のものでも良い)それでFirebase Consoleにログインする。
[Firebaseコンソール](https://console.firebase.google.com/)2. プロジェクトを作成(プラスマークのタイル)から新規にプロジェクトを作成する。
ちなみにプロジェクトは異なるクライアント環境ごとに作る必要は*ない*。
モバイルアプリで言えばサーバーサイドの環境に当たるので、大抵はAndroidでもiOSでも共通だろう。
3. 以下を入力
* プロジェクト名:任意のもの。
* 地域/ロケーション:デフォルトではアメリカ合衆国になっているが、日本でサービスするならばJapanに変更した方
* アナリ