- 1. 「The Ultimate Guide to WKWebView」をSwiftUIで実装する #12 – Providing a custom user agent –
- 2. iphoneアイコンの角丸半径 対応表
- 3. 【iOS】起動するStoryboardを変更して画面が真っ黒になった時の対処法
- 4. flutterのurl_launcherライブラリのlaunchでLost Connectionになってしまう
- 5. SwiftUIとUIKit、結局どっちを使えば良いのかを考える
- 6. [Swift] .filter{ }.firstのパフォーマンスについて
- 7. Sourcery+mermaidでクラス図を一発生成?
- 8. Apple Silicon(M1)で iOS 開発環境を爆速構築する方法
- 9. FlutterでiOSのヘルスケアから今日の歩数系合計を抽出して表示する方法
- 10. 「The Ultimate Guide to WKWebView」をSwiftUIで実装する #11 – Reading and deleting cookies –
- 11. 【よくあるエラー対応】”-[UIViewController _loadViewFromNibNamed:bundle:] loaded the \”xibファイル名\” nib but the view outlet was not set.”
- 12. 借用スマホの返却時チェックリスト
- 13. 【iOS】TableViewのCell をスワイプして削除する
- 14. Google Maps API for iOSとPlaces APIと Maps URLsでマーカーからGoogle Mapに飛ぶ
- 15. 何となくしか理解していないキーチェインを使いこなす
- 16. 【Flutter】ステータスバーの文字色変更の挙動について
- 17. MacでWebKitのビルド時間を計測してみる
- 18. RealmをRxSwiftで実装してみる
- 19. 本格始動!
- 20. SwiftUIのドロップダウン、ホイール、メニュー、Picker
「The Ultimate Guide to WKWebView」をSwiftUIで実装する #12 – Providing a custom user agent –
[「The Ultimate Guide to WKWebView」](https://www.hackingwithswift.com/articles/112/the-ultimate-guide-to-wkwebvie)をSwiftUIで実装してみるの、
12こ目になります。今回はUser-Agentの設定についてです!
元記事に書いていた設定方法以外も試していますそもそも開発者が明示的にUser Agentを指定するというケースがあるのか、というのが疑問ではあったのですが、そうせざるを得ない場合もあると思います。私はあった・・・
そういう方のお役に立てば幸いです。
## 目次
シリーズ化していこうと思うので、全体の目次を置いておきます。
リンクが貼られていないタイトルは、記事作成中または未作成のものになります。|#|タイトル|
|——|—————–|
|01|[Making a web view fill the screen](https://qiita.com/kamimi01/items/b4d6cbafa587831c1b
iphoneアイコンの角丸半径 対応表
iphoneのアイコンの角丸をcssで表現しようとすると
`border-radius: 27px;` とかじゃキッチリ同じにはならないそうです。
“`
.smooth_corner_r27 {
background: …;
border-radius: 27px;
}
@supports (mask-image: paint(smooth-corners)) {
.el.is-loaded {
border-radius: 0;
mask-image: paint(smooth-corners);
–smooth-corners: 12;
}
}
“`
とかやらないとキレイにならないのです。Smooth Corners、Smooth Curves、Continuous Corner Curve、Squircle Corner
と諸説呼び方があるようです。
ios7よりも前はもっとトガッてたみたいっすね。
これだけ広く利用されているのでアイコンに採用しようとするのですが
この半径の長さ。これが
【iOS】起動するStoryboardを変更して画面が真っ黒になった時の対処法
# 起動するStoryboardを変更する方法
下記、記事を参考。
https://qiita.com/Shotaro_Mori_/items/c9348f3f59308171402a
こちらの記事で画面が真っ黒になったときはエントリーポイントを変更したら良いとのこと。
## エントリーポイントの変更をしてもまだ真っ黒なときの対処法
Info.plistの[Application Session Role]も確認すべし!!
→ https://stackoverflow.com/questions/59123012/xcode-11-2-1-swift-5-cant-change-main-storyboard-main-to-another-storyboa
* 環境
* Xcode 13.2.1
flutterのurl_launcherライブラリのlaunchでLost Connectionになってしまう
# 現象
Flutterの[url_launcher](https://pub.dev/packages/url_launcher)ライブラリを使っていて、
“`dart
final badUrl = ‘https://sample.com/マルチバイト文字.pdf’;
launch(badUrl);
“`
↑のような形でlaunchをした際に無言でLost Connectionになってしまいました。# 原因と解決法
マルチバイトが含まれているせいだったようです。
“`dart
final badUrl = ‘https://sample.com/マルチバイト文字.pdf’;
// ↓の処理を追加
final goodUrl = Uri.encodeFull(badUrl);
launch(goodUrl);
“`
↑これで治りました。
SwiftUIとUIKit、結局どっちを使えば良いのかを考える
# SwiftUIとUIKit、結局どっちを使えば良いのか
SwiftUIがUIKitの後継のように登場し、これからの開発においてSwiftUIを使うべきなのか悩んでいる開発者も多いと思います。
この記事では、いろいろな角度からSwiftUIとUIKitの立ち位置を考えてみます。## マルチプラットフォームから考える
ここでのマルチプラットフォームとは、iOSとAndroidのことではなくAppleプラットフォームの上での違いを指します。
具体的には現在はmacOS, iOS, iPadOS, tvOS, watchOSが各プラットフォームを指します。
“`
First Where Violation: Prefer using `.first(where:)` over `.filter { }.first` in collections. (first_where)
“`
これは警告文のところだけ訳すと、
“ `.filter { }.first` よりも `.first(where:)` を使用することを推奨します。“まさに、直接的にfi
Sourcery+mermaidでクラス図を一発生成?
[GitHubがmermaidをサポートしましたね!?](https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/)
早速使ってみたりしていたのですが、「[クラス図も作れるんだー](https://mermaid-js.github.io/mermaid/#/classDiagram)、iOSアプリのあのややこしいところのクラス図作ろうかなー」とかゴニョゴニョしてたら、ピンときました!
これは[Sourcery](https://github.com/krzysztofzablocki/Sourcery)案件だ!自動生成できるんじゃないだろか!ということでやってみました?
まだまだバグってそうなんですが、それっぽく動くようになったので晒してみます。ソースコードはGistに置いてます。
https://gist.github.com/zeero/32095f805b89825b32591b195c4bf7e9
mermaidで表示するために補正いれたりしてます。仕様などの注意書きは `REA
Apple Silicon(M1)で iOS 開発環境を爆速構築する方法
# はじめに
この記事は、とにかく早く Apple Silicon 環境で iOS アプリ開発環境を整えなければならない方を対象に執筆しました。
Apple Silicon で動かないと業務に支障が出るから買い換えられない…
なんて方を救えたら嬉しいです。なので、
Rosetta を使うのは嫌!ワークアラウンドも嫌!という方は別記事を参考にしていただければと思います。# 検証済み環境
– Tool
– CocoaPods
– Carthage
– SPM
– Mint
– XcodeGen
– Homebrew
– Env
– MacBook Pro 14 inch 2021
– Apple M1 Pro
– macOS Monterey 12.2.1
– [mac-auto-setup](https://github.com/akkeylab/mac-auto-setup)# Rosetta を使いましょう
サードパーティ製ツールをあまり使っていない場合を除き、Appl
FlutterでiOSのヘルスケアから今日の歩数系合計を抽出して表示する方法
ただ表示するだけだと審査落ちる場合もあります。気をつけましょう
`https://social.msdn.microsoft.com/Forums/en-US/82351da9-58b6-4b46-9e78-ed35e2c13b2e/ios-app-rejected-due-to-healthkit-reference-that-the-project-doesnt-have-and-use-anywhere?forum=xamarinforms`以下を追加
ライブラリ追加
“`yml:pubspec.yml
health: ^3.0.4
“`ヘルスケアの追加
“`plist:ios/Runner/info.plist
NSHealthShareUsageDescription
We will sync your data with the Apple Health app to give you better insights
NSHealthUpdateUsageDescript
「The Ultimate Guide to WKWebView」をSwiftUIで実装する #11 – Reading and deleting cookies –
[「The Ultimate Guide to WKWebView」](https://www.hackingwithswift.com/articles/112/the-ultimate-guide-to-wkwebvie)をSwiftUIで実装してみるの、
11こ目になります。WKWebViewの中では鬼門・・・と勝手に思っているcookieを扱います!
といっても多分鬼門なのはcookieの設定なのだと思っています。今回はタイトルの通り、ReadとDeleteをしているのみになります。## 目次
シリーズ化していこうと思うので、全体の目次を置いておきます。
リンクが貼られていないタイトルは、記事作成中または未作成のものになります。|#|タイトル|
|——|—————–|
|01|[Making a web view fill the screen](https://qiita.com/kamimi01/items/b4d6cbafa587831c1be0)
(WebViewを画面に表示する)|
|02|[Loading rem
【よくあるエラー対応】”-[UIViewController _loadViewFromNibNamed:bundle:] loaded the \”xibファイル名\” nib but the view outlet was not set.”
# 状況
– Xcodeの`InterfaceBuilder`を用いてViewを作成し実行したところ、View生成時に以下のエラーに遭遇。“`
“-[UIViewController _loadViewFromNibNamed:bundle:] loaded the \”xibファイル名\” nib but the view outlet was not set.”
“`
つまり、「指定された xibファイルを読み込んだけど、ViewのOutletがセットされてないよ〜」 とのこと。そういえば、 別のxibファイルからViewをコピぺして、最初に生成されていたViewを消しちゃってそのままにしてたなと。
# 対応
ViewのOutletをセットしてあげましょう!
## xibファイルを開き、`File’s Owner`を選択
## 右端の`inspector`を表示し、一番右端の`Outlets`を選択ここでViewにOutletが接続されていないことがはっきりわかりますね
をOFFにする
– [ ] 言語設定を戻す
– [ ] 日付を自動設定に戻す
– [ ] Webブラウザのシークレットタブをすべて閉じる
Webブラウザはシークレットモードのみ使用すべき
– [ ] インストールしたアプリをすべてアンインストールする
– [ ] アプリから取得したファイルをすべて削除する
通常はアプリをアンインストールしたら自動で消える
– [ ] ダウンロードしたファイル(APKファイルなど)をすべて削除する
– [ ] ダウンロードした画像(スクリーンショットなど)をすべて削除する
– [ ] QRコードリーダーの履歴をすべて削除する
– [ ] ログインしているアカウント(Googleなど)をすべてログアウトする
– [ ] 追加したWi-Fiのアクセスポイントをすべて削除する
– [ ] プ
【iOS】TableViewのCell をスワイプして削除する
# はじめに
これは半分メモ書きのような記事です。そこまで内容は深くありませんのでご了承のほどよろしくお願いいたします。# 前提内容
画像のような簡単なToDoアプリを作成中です。タップしたらチェックマークが付き、再度タップするとチェックマークが外れる。iOSアプリ開発で入門的存在といて扱われるようなアプリです。
# 目標
画像のように、削除用のボタンを左にスライドさせると出現します。
タップもしくはそのまま左にスライドさせるとCellが削除されます。
の記事を参考にしながら、とりあえず現在地をアプリ上に表示してください。
2. ここからがPlace APIの出番です。私の場合近くのカフェを知りたいのでカフェを検索する手順を紹介します。
“`Swift
let session = URLSession.shared
let locationManager = CLLocationManager()guard let url = URL(string: “https://maps.googleapis.com/maps/api/place/nearbysearch/jso
何となくしか理解していないキーチェインを使いこなす
# はじめに
キーチェイン…iOS の開発時に出てくるキーワードですが、意外とネットで調べてその場で解消して終わらせていることが多かったので備忘録として残しておこうかと思います。
## キーチェインとは?
キーチェインとはそもそも何なのか?
簡単に言うとパスワードとか証明書とか鍵とかを保存するファイルです。デフォルトでは
– システムキーチェイン(`/Library/Keychains/System.keychain`)
– ログインキーチェイン(`~/Library/Keychains/login.keychain-db`)
– iCloud キーチェインなどが存在します。
## キーチェインの種類
キーチェインには複数種類が存在します。
### システムキーチェイン
ユーザー間で共有されるシステム管理のキーチェインです。
もちろん、システム管理ですので、システム管理者アカウント(もしくは `sudo` とか)でないと操作は出来ません。### デフォルトキーチェイン
デフォルトで使用されるユーザー管理のキーチェインです。
後述するカスタムキーチェインをデ
【Flutter】ステータスバーの文字色変更の挙動について
## 動作環境
Flutter: 2.8.1
Dart: 2.15.1## はじめに
Flutterでは`SystemChrome.setSystemUIOverlayStyle`というメソッドが用意されていて、引数に指定した`SystemUiOverlayStyle`に対して、`statusBarBrightness`(iOS)と、`statusBarIconBrightness`(Android)を指定してあげればステータスバーの文字色をBrightnessに合った色に変更することができます。
“` dart
SystemChrome.setSystemUIOverlayStyle(
SystemUiOverlayStyle(
statusBarBrightness: Brightness.light, // for iOS
statusBarIconBrightness: Brightness.dark, // for Android
),
);
“`下記のコードを実行すると、iOSとAndroidそれぞれステータスバーの文字色が
MacでWebKitのビルド時間を計測してみる
# 背景
– iOSエンジニアとしては、Macのスペックにより、ビルド時間はどれくらい違うのかを知りたいところ**やること**
– ビルドにものすごい時間がかかるプロジェクトとして有名な WebKit をビルドしてみる
– [GitHub – WebKit/WebKit](https://github.com/WebKit/WebKit)
– モデルごとに WebKit のビルド時間を計測して比較する
– 出来れば同じ環境(コミット)でビルドしたい(が、手間がかかりそうなので最新masterでビルドする)—
# ビルド時間の計測結果| モデル | コードコンパイル、テスト完了時間 | メモ |
| — | — | — |
| M1 Pro 16” MacBook Pro (2021) | 16m:48s | この記事で検証 |
| M1 Mac mini (2020) | 19m:32s | 参考サイトより抜粋 |
| Intel Mac Pro (2019) | 20m:11s | 参考サイトより抜粋 |
| M1 13” MacBook
RealmをRxSwiftで実装してみる
## 前提
RealmはRxSwiftCommunityにおいて[RxRealm](https://github.com/RxSwiftCommunity/RxRealm)というライブラリが既に存在しますが、
今回はそれらを使用せず実装して行きたいと思います。https://github.com/RxSwiftCommunity
https://github.com/RxSwiftCommunity/RxRealm
実装はDIを意識しているためコンストラクタ経由で実体を渡すようにしています。
## 保存
“`swift
func add(object: O) -> Single where O : Object {
return Single.create { observer in
do {
let realm = try Realm()
try realm.write {
realm.a
本格始動!
iOSアプリを作りたいと思い続けて、数年経ちました。
昨年の誕生日に父親から、macbookairをプレゼントされました。
これで、晴れてアプリ作成に乗り出せる状態になりました。ちなみに、macの仕様は、
“`
MacBook Air(Retina, 13-inch, 2020)
プロセッサ 1.1GHz デュアルコアIntel Core i3
メモリ 8GB 3733 MHz LPDDR4X
グラフィックス Intel Iris Plus Graphics 1536MB
“`です。
iOSアプリを作る過程を呟きのような感じで
徒然なるままに記事を書いていきたいと思っています。
SwiftUIのドロップダウン、ホイール、メニュー、Picker
# 選択メニューを作る方法です
# 選択UIを表示したい
ユーザーに選択肢の中から選んでもらうメニューをSwiftUIで実装するには、Pickerを使います。# 方法
“`swift
struct ContentView: View {
@State var languages:[String] = [“English”,”Russian”,”Ukrainian”]
@State var greetings:[String:String] = [“English”:”Hello”,
“Russian”:”Привет привет(Privet privet)”,
“Ukrainian”:”Привіт привіт(Pryvit pryvit)”]
@State var selectedLanguage:String = “English”
var body: some