- 1. 台風が多かったのでSwiftUIで気圧計を作る
- 2. チュートリアルから一歩踏み出したSwiftUIのカスタムAnimationの作り方ーその1(AnimaionModifier編)
- 3. AVCaptureMultiCamSession で取得したカメラの映像をMetalで合成&表示する
- 4. iOSのバージョンと Safariバージョンの対応表(2019/11/22現在
- 5. 【iOS13】モーダルをスワイプで閉じないようにする
- 6. SwiftGenをCocoaPodsで入れてみたよ
- 7. [iOS13]SceneDelegateでURL Schemeのリクエストを受取る
- 8. Appleにバグレポートを送った時の手順
- 9. iPadOSにおけるUser-Agent
- 10. #12 Main.storyboardからUITableViewのdelegate先を指定する1例
- 11. #11 Xcodeで画像を貼り付ける1例
- 12. #10 XcodeのUIButtonの角を丸くする1例
- 13. SwiftUI 全画面でホームバーを隠す
- 14. iOS13.2以降でCoreNFCが動かない!っていう現象が発生したので検証してみました。
- 15. SwiftUIでNavigationViewの背景をColorで設定したい
- 16. チュートリアルから一歩踏み出したSwiftUIとCombineの連携(初級編)
- 17. 【Swift】Combine.frameworkのFutureとDeferredと即時実行、遅延実行
- 18. Flutter PlatformView (iOS) の作成
- 19. #9 UITableViewCellをカスタマイズする1例
- 20. #8 XcodeのTableViewの使い方1例
台風が多かったのでSwiftUIで気圧計を作る
この記事は、自分の過去記事の[台風が来るのでiPhone6で気圧計を作る](https://qiita.com/bellx2/items/fc1de7197f583001ca59)のアップデート版です。いまだにブックマークやいいねがつくので、SwiftUIで書き直してみました。
SwiftUIの動作サンプルとして、前のコードの基本部分はそのままにしました(汗、
![IMG_0045.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14768/b95863f4-4e3b-e5c2-7e60-07a27d36b830.png)
SwiftUIで描いたら何もしなくてもダークモード対応になりました♪
# 環境
Xcode 11.2.1
iOS13.1.3 (iPhoneX)# コード
とりあえず使ってみたい人は以下に公開しています
https://github.com/bellx2/barometer_swiftui
# 実装説明
ContentView.swiftだけで完結です。
– 気
チュートリアルから一歩踏み出したSwiftUIのカスタムAnimationの作り方ーその1(AnimaionModifier編)
#はじめに
今回はカスタムアニメーションションの作り方を書きたいと思います。
[前回ViewModifierを使った付箋](https://qiita.com/takaf51/items/8fc8834b2fe03848222e)を作りましたが、今回はその付箋部分をアニメーションさせたいと思います。
アニメーション部分に特化するため、形状は角丸のないシンプルなものを土台にします。![ezgif.com-video-to-gif-3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24726/74abe866-6b5e-67bd-d1bf-e247860dad59.gif)
#カスタムアニメーション実装の手順
今回のアニメーションで変更させなければならない値をまずみてみましょう。“`swift:PartOfViewModifier.swift
struct StickyNoteModifier: ViewModifier {
var ceaseSize: CGFloat
AVCaptureMultiCamSession で取得したカメラの映像をMetalで合成&表示する
iOS13で複数カメラの映像を同時に扱えるようになりました。
[AVCaptureMultiCamSession – AVFoundation | Apple Developer Documentation](https://developer.apple.com/documentation/avfoundation/avcapturemulticamsession?language=objc)
これができると、例えば車載とか街歩き系の配信で風景と一緒にワイプも載っけたりできて面白そうですね。ということでAppleのサンプルを参考に自分でも触ってみました。
[AVMultiCamPiP: Capturing from Multiple Cameras](https://developer.apple.com/documentation/avfoundation/cameras_and_media_capture/avmulticampip_capturing_from_multiple_cameras)今回作ったサンプルの処理概要は以下のようになります。
1. `AVCapt
iOSのバージョンと Safariバージョンの対応表(2019/11/22現在
iOSバージョンとSafariバージョンの対応表をググったんですが見つけられなかったので調べてみました。
※ 確認には手元の実機とシミュレータを使いました。## 対応表
|iOS Version | Safari Version | Webkit Version |
|—|—|—|
| iOS13.2.2 | 13.0.3 | 605.1.15 |
| iOS13.1.2 | 13.0.1 | 605.1.15 |
| iOS13.1 | 13.0.1 | 605.1.15 |
| iOS13.0 | 13.0 | 605.1.15 |
| iOS12.4.1 | 12.1.2 | 605.1.15 |
| iOS12.4 | 12.1.2 | 605.1.15 |
| iOS12.2 | 12.1 | 605.1.15 |
| iOS12.1 | 12.0 | 605.1.15 |
| iOS12.0 | 12.0 | 605.1.15 |
| iOS11.4.1 | 11.0 | 605.1.15 |
| iOS11.4 | 11.0 | 605.1.15
【iOS13】モーダルをスワイプで閉じないようにする
# `modalPresentationStyle = .pageSheet` で表示されたモーダルをスワイプで閉じないようにする
[公式のサンプル](https://developer.apple.com/documentation/uikit/view_controllers/disabling_pulling_down_a_sheet)があるのだが、イマイチ読みづらい…ような気がした:frowning2:
特に、`presentationController.delegate`への受け渡しが遷移元に書いてあるので、見落としてしまう。
## Storyboard
SwiftGenをCocoaPodsで入れてみたよ
SwiftGenをprojectに導入してみたので, 備忘録がてら書き残しておきます.
※SwiftGenはHomebrewを用いて導入することもできますが, 今回はCocoaPodsの場合のみです.
サンプルコードはこちら -> [SwiftGenPractice](https://github.com/tihimsm/SwiftGenPractice)
SwiftGen本家リポジトリはこちら -> SwiftGen(https://github.com/SwiftGen/SwiftGen)# 目次
1. CocoaPodsでSwiftGenをinstall
2. swiftgen.ymlを用意
3. BuildPhasesにSwiftGenに関する記述を追加最終的に↓の画像のような構成になる前提で読んでいただけると.
![スクリーンショット 2019-11-22 14.42.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142392/b1ca84af-66db-e31e-3ebb-bd
[iOS13]SceneDelegateでURL Schemeのリクエストを受取る
## 概要
URL Schemeで他アプリと連携して、callbackで自分のアプリに戻ってくる処理を実装しています。
iOS12までは`AppDelegate`の下記メソッドでリクエストを受け取っていましたが、iOS13で受け取れなくなっていました。`func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool`
> [iOS13 application openUrl? |Apple Developer Forums](https://forums.developer.apple.com/thread/124132)
「`SceneDelegate`を代わりに使用する」ということはすぐわかったのですが、
まだSceneDelegateを導入していなかったこともあり少々手こずりました…
内容としてはあまり多くないですが備忘録としてまとめます。## 環境
* iOS 13.2.3
* Xcode
Appleにバグレポートを送った時の手順
iOS13で[CNCopyCurrentNetworkInfo()がNULLを返す時がある](https://forums.developer.apple.com/message/385189)現象が自分のところでも再現したので、Appleにバグレポートを送りました。
その時の手順まとめ。## `sysdiagnose`でログを取得する
基本、[Bug Reporting – Profiles and Logs](https://developer.apple.com/bug-reporting/profiles-and-logs/)にある手順書通りに作業するだけ。## プロファイルのインストール
[Bug Reporting – Profiles and Logs](https://developer.apple.com/bug-reporting/profiles-and-logs/)から、目的に応じたプロファイルを選択してiPhoneにインストールします。今回はWi-Fi関連の障害なので、`Wi-Fi for iOS`のプロファイルをインストールしましょう。
##
iPadOSにおけるUser-Agent
iPadOSが13から登場し、その影響でiPadにおけるUser-Agentの仕様が変わったことが話題になりました。
その中で、気になることがあったので検証してみました。使ったのは[ウィルラボのUserAgent確認ツール](http://lab.risewill.co.jp/tools/web-tools/user-agent)です。
# 通常
スクリーンショット
`Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like
#12 Main.storyboardからUITableViewのdelegate先を指定する1例
#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.#環境
Xcode:11.2.1
Swift:5.1.2
2019/11##part1
`contrl`キーを押しながら`UITableView`を`Second View Controller`へドラッグ・ドロップする.##part2
`dataSource`と`delegate`を選択する.
ただし,1度に2つ選択できない.#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.#環境
Xcode:11.2.1
Swift:5.1.2
2019/11##part1
Xcodeで`Image View`と検索して,Viewに乗せる.##part2
必要な制約を付ける.##part3
#10 XcodeのUIButtonの角を丸くする1例
#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.#環境
Xcode:11.2.1
Swift:5.1.2
2019/11##part1
Veiwに`UIButton`を置き,制約を付ける.##part2
テキストの大きさ,テキストの色,テキスト,背景色を変更す
SwiftUI 全画面でホームバーを隠す
#SwiftUIで全画面時にHomeIndicatorを隠したい
SwiftUIではUIViewControllerを直接制御しないため、HomeIndicatorを非表示にする際に、prefersHomeIndicatorAutoHiddenメソッドを設定することができません。今のところはSwiftUIのContentView上でもpreferenceに設定が無いようなので、自前のクラスを挟んで制御するようにしてみました。
##SceneDelegateの起動設定を確認
iOS13から導入されたSceneDelegateにより、プロジェクト内の構成が変わっており、内部的にはSceneDelegateクラスのscene(_ ,willConnectTo: 〜〜〜)メソッドでrootViewControllerを指定するようになっています。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59249/8cb5ccef-da0a-5842-418b-c30b7c497ad0.png)
iOS13.2以降でCoreNFCが動かない!っていう現象が発生したので検証してみました。
#概要
NFCタグのIDを読み込んでみるアプリを作っていたのですが、iOSを最新にしたら動かなくなってしまったので色々検証た結果、iPhoneXR以降(iPhoneXR、iPhoneXS、iPhone11、iPhone11 PRO、iPhone11 PRO MAX)しか動かなくなった(らしい)というのがわかりました。
以下に詳細を記載してみたいと思います。#発生した問題
iOS13にてCoreNFCというライブラリ(NFCTagReaderSessionとかNFCNDEFReaderSessionとか)が使えるようになり、NFCタグからIDなどを読めるようになりました。
iOS13.0系とか13.1系にてNFCタグを読み取って色々使ってみており、NFCタグ読めるーワーイスゴーイターノシー♪ってなってました(何)
ところが、iOSを最新版にアップデートした途端(13.1.3から13.2.2)、「あなたの端末は対応していません!」みたいな文句を言われ、NFCの読み取りができなくなってしまいました!!(滝泣)
#なので検証してみた
手元にiPhone6S、iPhon
SwiftUIでNavigationViewの背景をColorで設定したい
#困った点
swiftUIでNavigationViewの背景色を変えたいと思って
.backgroundとかでいじってみても反応してくれなくて、ボエェェってなったので解決方法を書いておきます#解決方法
**NavigationView内でZStackを使う**
これで解決できました。イメージとしては
ZStackを使って
・カラーレイヤー
・UIパーツレイヤー
を重ねてやればいいっぽい。まだNavigationViewのAPIが完成していないっていうことなのか、仕様なのか?
ちなみにUIColorでは無く、Colorで色を指定しているので注意
“`swift
import SwiftUI
struct Welcome_view: View {
var body: some View {
NavigationView {
ZStack {
self.backGroundColor().edgesIgnoringSafeArea(.all)
VStack
チュートリアルから一歩踏み出したSwiftUIとCombineの連携(初級編)
#はじめに
今回は個人的にはWWDC2019の二大トピックと思っているSwiftUIとCombineの連携についてです。
Combineに関して知識が無い方はCombine自体の説明はここではしないので、下記WWDC2019のビデオで基礎知識を得てください。また、他のSwiftUI関連ビデオでもCombineが散見されますでのご覧になってない方は是非チェックしてみてください。– [Data Flow Through SwiftUI](https://developer.apple.com/videos/play/wwdc2019/226/)
– [Introducing Combine](https://developer.apple.com/videos/play/wwdc2019/722/)
– [Combine in Practice](https://developer.apple.com/videos/play/wwdc2019/721/)但し注意しなければならないのは、一部名称と実装方法が当時のものから変わっています。特に下記は注意が必要です。
– `Bina
【Swift】Combine.frameworkのFutureとDeferredと即時実行、遅延実行
以前投稿した内容で
Combine.frameworkの`Future`はインスタンスを生成した時点で
中のクロージャを実行させるということについて書きました。https://qiita.com/shiz/items/f089c93bdebfaef2196f
https://developer.apple.com/documentation/combine/futureこの場合
Subscribeをしていないのに処理が実行されてしまい
無駄にリソースを消費してしまう可能性や
副作用を起こして思わぬ動作をしてしまう可能性もあります。そういう場合`Deferred`を活用する方法があります。
https://developer.apple.com/documentation/combine/deferred
`Deferred`はinitで`createPublisher`というクロージャを受け取り
中でPublisherを生成します。
このクロージャは**Subscribeした時に初めて**実行されます。# 検証
下記のコードをPlaygroundで実行して確認し
Flutter PlatformView (iOS) の作成
FlutterでiOSのPlatformView (UiKitView) を作るまでに手こずったのでメモしておく。
### 前提
– 対象とするiOSのバージョンは11.0以上
– Swift
– Xcode 10.3 (Xcode 11入れていなかった。。)
– できるだけPlatformViewにだけフォーカスしたコードにする
– View作成時にパラメータを指定して、それを表示するだけ
– Androidは追ってiOS, Swiftは初心者なので、生暖かい目が嬉しいです。
## プロジェクトの作成と設定
### 作成
https://flutter.dev/docs/development/packages-and-plugins/developing-packages を参考にプロジェクトを作る。“`
$ flutter create –org org.yyyyyyyy –template=plugin -i swift -a kotlin my_first_view
$ cd my_first_view
$ flutter pub get
$ cd exa
#9 UITableViewCellをカスタマイズする1例
#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.#環境
Xcode:11.2.1
Swift:5.1.2
2019/11##part1
`View`に`UITableView`を置き,制約を追加し,`UITableViewCell`をその上に置く.
Cellの`identifier`を設定する.##part2
`Table View`を選択した状態で,`Size inspector`の`Row Hight`に任意の数字を入力する.#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.#環境
Xcode:11.2.1
Swift:5.1.2
2019/11##part1
Xcodeで`TableView`と検索する.##part2
UITableViewを置きたいViewに乗せる.
制約を付ける.