- 1. [Swift5]UITextViewのキーボードをタップで閉じる方法(シンプル)
- 2. iOS 14 / watchOS 7 HealthKit 変更点
- 3. TodoAPPでRxSwift入門[part2]
- 4. 【iOS】LiDARセンサーを用いたサンプルコード集を公開しました!
- 5. Swiftでカメラキャプチャーするための最小コード
- 6. 【iOS】コードから端末のSizeClassを判断する(Swift)
- 7. [Swift5]スクロールでNavigationBarを隠す方法(シンプル)
- 8. 【SwiftUI】alertメソッドでアラートを出す
- 9. 【Swift】Visionフレームワークを用いた動画からリアルタイムにボールの軌道を検出するアプリ
- 10. Swift:メモ RSSを使ったテーブルアプリ
- 11. 【Swift】条件に当てはまるFirebaseのドキュメントを一括削除
- 12. 【Swift】Firebaseで認証済みユーザーかどうか振り分ける処理
- 13. 【Swift】Eurekaでボタンの表示・非表示の切り替え
- 14. 【Swift】Eurekaのボタンの色を変更する方法
- 15. 【Swift】WKWebViewをコードだけで使い回す
- 16. Firebaseのタイムスタンプ型をSwiftでDate型にキャスト
- 17. 【Swift】1画面に2種類のCollectionViewを実装する方法
- 18. UIKit だけでタブブラウザを作ってオープンソースにした話
- 19. TodoAPPでRxSwift入門[part1]
- 20. 【SwiftUI】contextMenuで長押ししたときにメニューを出す
[Swift5]UITextViewのキーボードをタップで閉じる方法(シンプル)
## やりたいこと
UITextViewで文字を入力した後にキーボードを閉じたい場面があると思います。
また、Viewのどこをタップしてもキーボードを閉じることができれば便利ですよね。今回はそのような実装方法を紹介します。## コード紹介
“`swift
// Viewタップでキーボードを閉じる
override func touchesBegan(_ touches: Set, with event: UIEvent?) {
self.view.endEditing(true)
}
“`以上です。
iOS 14 / watchOS 7 HealthKit 変更点
iOS 14 / watchOS 7 から HealthKit に症状を記録するデータタイプや、歩行に関するより詳細なデータタイプが追加されるなどの変更がありました。
ECG 関連のアップデートが中心な感じですが、2021.1 の watchOS 7.3 アップデートで日本でも ECG が使えるようになったのでまとめてみました。
# 心拍に関するデータタイプ HKElectrocardiogramType の追加
wathOS 7.3 (iOS 14.4) より、日本でも Apple Watch で心電図(ECG)が使えるようになりました。アメリカので二年遅れてついに日本で使えるようになりました。Apple Watch S4,5,6 で使用可能です。
[https://www.apple.com/jp/newsroom/2021/01/ecg-app-and-irregular-rhythm-notification-coming-to-apple-watch/](https://www.apple.com/jp/newsroom/2021/01/ecg-app-and-irr
TodoAPPでRxSwift入門[part2]
#概要
最近RxSwiftを勉強し始めて現在理解していることを備忘録として残せたらいいなと思い記事にします。
そもそもRxSwiftのRxとは>Rx(Reactive X)とは、「オブザーバパターン」「イテレータパターン」「関数型プログラミング」の概念を実装している拡張ライブラリです。
Rxを導入するメリットは、「値の変化を検知できる」「非同期の処理を簡潔に書ける」ということに尽きると思います。 値の変化というのは変数値の変化やUIの変化も含まれます。 例えばボタンをタッチする、という動作もボタンのステータスが変わったと捉えることができRxを使って記述することができます。とのことです。
詳しくは以下のサイトを参照してください。
入門!RxSwift
RxSwiftについてようやく理解できてきたのでまとめることにした(1)今回はPart2になります。
前回の記事はこちら
[TodoAPPでRxSwift入門[part1]](https://qiita.com/apapapa/items/5397470a5856978fd0e4)#画面構成
![Simulator Scre
【iOS】LiDARセンサーを用いたサンプルコード集を公開しました!
iOSのLiDARセンサーを用いたサンプルコード集をGitHubに公開したので紹介します。
本記事の執筆時点でGitHubで91スターを頂いています![TokyoYoshida/ExampleOfiOSLiDAR](https://github.com/TokyoYoshida/ExampleOfiOSLiDAR)
?よさそうだと思った方はスターをお願いします⭐例えば、こんなサンプルが入っています。
The GitHub repository of sample code using iOS LiDAR sensors, including 3D scanning, got 40 stars in a day!
iOSのLiDARセンサーを用いたサンプルコードのGitHubリポジトリが1日で40スターも取った!
The repository is here.https:
Swiftでカメラキャプチャーするための最小コード
## 準備
`Info.plist` に以下の設定を追加。“`xml
NSCameraUsageDescription
[カメラ使用に関する説明]
“`## コード
“`swift
import UIKit
import AVFoundationclass CaptureViewController: UIViewController {
private let previewLayer: AVCaptureVideoPreviewLayer = {
let previewLayer = AVCaptureVideoPreviewLayer()
previewLayer.videoGravity = .resizeAspectFill
return previewLayer
}()init() {
super.init(nibName: nil, bundle: nil)let session =
【iOS】コードから端末のSizeClassを判断する(Swift)
## SizeClassとは
**SizeClass**とは、端末の縦横のサイズをそれぞれ`Compact`または`Regular`として指定し、その組み合わせによってレイアウトの変更ができるようにするための機能。
`Compact`が小さいサイズのときに使われ、`Regular`が大きいサイズとして使われます。
組み合わせは全部で4通りあります。| SizeClass(Full) | SizeClass(略) | 主な機種 |
|:–|:–|:–|
| Compact/Compact | CC | iPhone8の横画面、iPhone12の横画面 |
| Compact/Regular | CR | すべてのiPhoneの縦画面 |
| Regular/Compact | RC | iPhone8Plusの横画面、iPhone11の横画面など |
| Regular/Regular | RR | iPad(フルスクリーン)の縦画面、横画面 |
より詳しいパターンについては、公式ドキュメントをご参照ください。
https://developer.appl
[Swift5]スクロールでNavigationBarを隠す方法(シンプル)
## やりたいこと
YouTubeなどでよく目にする、スクロールでタイムラインの下部に移動する際にNavigationbarも同時に画面上部に隠す動作を実装したいと思います。今回紹介する方法は非常にシンプルです。
他にも最適解のような方法があるとは思いますが、とにかくNavigationBarを隠せれば問題ないという方は是非参考にしてみてください。## 実装方法
“`swift
// スクロールでナビゲーションバーを隠す
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView.panGestureRecognizer.translation(in: scrollView).y < 0 { navigationController?.setNavigationBarHidden(true, animated: true) } else { navigationController?.setNavigationBarHidden(false, animated: true)
【SwiftUI】alertメソッドでアラートを出す
先日リリースした私のアプリに使用した技術をひとつずつ解説しています。
私のアプリはこちら。https://apps.apple.com/jp/app/id1553876980
# alertとは
下のようなアラートを出すメソッド。iPhoneを使っているといろんな場面で見かけるかと思います。
![スクリーンショット 2021-03-01 15.37.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1130636/0003a64e-54c1-cc07-8ce5-6ff2448b6c05.png)
https://developer.apple.com/documentation/swiftui/view/alert(ispresented:content:)
# 実際の動作
Swift:メモ RSSを使ったテーブルアプリ
“`swift
import UIKit
class ListViewController: UITableViewController,XMLParserDelegate{//uitableviewcontrollerはdatasourceやdelegateも批准している
var parser:XMLParser!//rssデータを解析するためのXMLParserクラスのインスタンスを格納するためのプロパティ
var items = [Item]()//複数の記事を格納するための配列
var item:Item?//Itemクラス型のプロパティ Itemクラスはタイトルと本文のURLの2つのプロパティを持つ
var currentString = “”
//セルの個数
override func tableView(_ tableView:UITableView,numberOfRowsInSection section:Int) -> Int {
return items.count
}
//tableView:cellForRowAt
【Swift】条件に当てはまるFirebaseのドキュメントを一括削除
条件に該当するドキュメントを削除するコード
“`swift
Firestore.firestore().collection(“users”).whereField(“user_name”, isEqualTo : “田中”).getDocuments() { (querySnapshot, err) in
if let err = err {
print(“Error getting documents: \(err)”)
} else {
for document in querySnapshot!.documents {
document.reference.delete()
}
}
}
“`
このコードの場合user_nameが田中と書かれたすべてのドキュメントが削除されます
【Swift】Firebaseで認証済みユーザーかどうか振り分ける処理
最初の画面を認証済みユーザーと新規ユーザーとで切り替えたい時の処理
“`swift
import UIKit
import Firebase
import FirebaseUIclass LaunchViewController : UIViewController{
override func viewDidLoad() {
super.viewDidLoad()
//ロードされるまでの初期画面(ロゴ画像、ナビゲーションバーなど)
}
}
override func viewDidAppear(_ animated: Bool) {if Auth.auth().currentUser != nil {
self.performSegue(withIdentifier: “sign”, sender: nil)
print(認証済みユーザー)} else {
se
【Swift】Eurekaでボタンの表示・非表示の切り替え
まずはフォームを作成
ここでは簡略化のため表示・非表示を切り替えたいボタンのみ実装しています“`swift
override func viewDidLoad() {
super.viewDidLoad()
form
<<< ButtonRow("Button") {row in row.tag = "delete_row" row.title = "商品を削除する" row.onCellSelection{[unowned self] ButtonCellOf, row in self.delete() } } } ``` 次に表示・非表示を切り替えるコード ```swift override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated)
【Swift】Eurekaのボタンの色を変更する方法
SwiftのライブラリEurekaでボタンの色を変更する方法に苦戦したので残しておきます。
“`swift
<<< ButtonRow("Button3") {row in row.tag = "delete_row" row.title = "商品を削除する" row.onCellSelection{[unowned self] ButtonCellOf, row in self.delete() } }.cellSetup() {cell, row in cell.backgroundColor = UIColor.white cell.tintColor = UIColor.red } ``` 他にもalph
【Swift】WKWebViewをコードだけで使い回す
SwiftでUITableViewのセルごとに異なるウェブサイトに遷移させたい時に便利な使い回しコード。
まずは使い回すclassを指定
“`swift
import UIKit
import WebKitclass WebView : UIViewController, WKUIDelegate{
var webView : WKWebView!
var request_url : URL?override func loadView(){
let webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.uiDelegate = self
view = webView
}override func viewDidLoad() {
super.
Firebaseのタイムスタンプ型をSwiftでDate型にキャスト
まずはFirebaseのデータを配列?リスト?として取得するクラスを作成
もともとFirebaseにはdateという名前のタイムスタンプ型のフィールドが登録されている前提“`swift
import Foundation
import CodableFirebase
import Firebasestruct Info : Decodable {
//Firebaseから取得するフィールドを格納する変数を定義
var id : String?
var messageId : String?
var roomid : String?
var senderid : String?
var created_date : Date?static func decode(_ data : [String:Any]) -> Info? {
do {
var item = try FirestoreDecoder().decode(Info.self, from: da
【Swift】1画面に2種類のCollectionViewを実装する方法
まずlazy varで2種類のCollectionViewを定義
“`swift
lazy var collectionView1 : UICollectionView = {let layout = UICollectionViewFlowLayout()
let collectionView = UICollectionView(
frame: self.view.bounds,
collectionViewLayout: layout)collectionView.backgroundColor = UIColor.hex(string: “#eeeeee”, alpha: 1)
collectionView.delegate = self
collectionView.dataSource = selfcollectionView.register(Collecti
UIKit だけでタブブラウザを作ってオープンソースにした話
2020年末、こよなく愛用していた Smooz という iOS 向けのタブブラウザが突然使えなくなってしまいました。で、代わりのブラウザをいろいろ試してみたものの、Smooz みたいに手に馴染む物が見つからず… ならばと思い、試しに作ってみたところ、意外にも標準的な UI の組み合わせで作れてしまったので、一通り実装して[App Store でリリース](https://apps.apple.com/jp/app/relief-simplest-tab-browser/id1553379094)してみました。
また、日頃から Qiita やインターネットでいろいろな方の記事を参考にさせてもらっているので、何か還元できないかと思い、[オープンソースにしてみました](https://github.com/ogaoga/UITabBrowser)。独学なのであまり自身はないですが、参考にしていただければ幸いです。
ということで、このアプリをどう作ったかを解説します。
# コンセプト
## 安心して使えるブラウザ
Smooz では個人情報の扱いが問題となったので、一切情報を収集、
TodoAPPでRxSwift入門[part1]
#概要
最近RxSwiftを勉強し始めて現在理解していることを備忘録として残せたらいいなと思い記事にします。
そもそもRxSwiftのRxとは
>Rx(Reactive X)とは、「オブザーバパターン」「イテレータパターン」「関数型プログラミング」の概念を実装している拡張ライブラリです。
Rxを導入するメリットは、「値の変化を検知できる」「非同期の処理を簡潔に書ける」ということに尽きると思います。 値の変化というのは変数値の変化やUIの変化も含まれます。 例えばボタンをタッチする、という動作もボタンのステータスが変わったと捉えることができRxを使って記述することができます。とのことです。
詳しくは以下のサイトを参照してください。
[入門!RxSwift](https://open8tech.hatenablog.com/entry/2019/04/03/111100)
[RxSwiftについてようやく理解できてきたのでまとめることにした(1)](https://qiita.com/_ha1f/items/e16ddc6017c4ad807c3c)###今回使用するライブラリ
R
【SwiftUI】contextMenuで長押ししたときにメニューを出す
先日リリースしたアプリに使用した技術をひとつずつ解説しています。
私のアプリはこちら。https://apps.apple.com/jp/app/id1553876980
# contextMenuとは
任意のビューに対し、長押ししたときにメニューを出す機能を追加するメソッド。
https://developer.apple.com/documentation/swiftui/view/contextmenu(menuitems:)
# 実際の動作
実際にアプリを触らないとわかりづらいかもしれませんが、__長押しすることでメニューが表示さ