Swift

iOS17 で tableView.tableHeaderView = searchController.searchBar してたらバグったので UISearchBar を使うことにした

iOS17 にしたら tableHeaderView に入れた searchController がバグって表示されるようになってしまった。 iOS17めっちゃバグるやん pic.twitter.com/DO7ewmgVBh— スターホシ (@star__hoshi) October 5, 2023 最初は hidesNavigationBarDuringPresentation …

個人開発のアプリを CocoaPods から Swift PM に移行した

個人開発のアプリを CocoaPods から Swift Package Manager に移行した。 やることはシンプルで $ pod deintegrate して、Xcode の Package Dependencies に Podfile にあるライブラリを追加していくだけでよい。 なのだが、同時にM1Macへの移行やiOS15対応…

Xcode11 で Resource の Localization をする

Xcode11 から Resource の Localization ができるようになった。 https://help.apple.com/xcode/mac/11.0/index.html?localePath=en.lproj#/dev7c584bb2a やり方は簡単で、まずベースとなる言語のファイルを追加、Localization の設定、Localize 用のファイ…

Share Extension で画像のシェア先に自分のアプリを出す

これの Share 先に自分のアプリを表示させて、保存などの処理を行う。 やることは Target 追加 App Groups の設定 証明書の修正 Podfile 修正 新しいTargetの Info.plist 修正 ShareViewController の実装 データの保存先について Simulator で確認 です。 T…

Xcode10 にしたら Multiple commands produce ... Info.plist で消耗した

個人プロジェクトを Xcode10 対応してたらこんなエラーが出た。 :-1: Multiple commands produce '/Users/hoge/Library/Developer/Xcode/DerivedData/KotaichiDex-eiyecmvfctikcwcspitwpzskudue/Build/Products/Debug-iphonesimulator/PokemonRealm/PokemonR…

Tesseract-OCR-iOS を使う

【Swift】文字認識ライブラリ、TesseractOCR for iOSを試してみた - Qiita に使い方があるが、少し古かったので Xcode9.4, Swift4 で動かすための手順。 Podfile pod 'TesseractOCRiOS', '4.0.0' そして pod install、終わったら xcworkspace を開く。 Build…

Firebase HTTPS Callable Functions を type-safe に叩けるライブラリ

Firebase HTTPS callable function を試してみる に使い方は書いたが、素のまま SDK を使うのは厳しいので APIKit っぽく Endpoint を定義できていい感じに Function を叩けるようなライブラリを作った。 github.com endpoint の path と Decodable な Respo…

続・イケてない JSON を Swift の Decodable で扱いやすいモデルにデコードする

イケてない JSON を Swift の Decodable で扱いやすいモデルにデコードする の続き。 今度も last.fm の user.getRecentTracks を Decode していく。 尚、文字を打つのが面倒になったためこの記事はあらゆる説明を省略している。 JSON これを decode してい…

イケてない JSON を Swift の Decodable で扱いやすいモデルにデコードする

last.fm というサービスがあって、API も公開されているのでそれを Swift で使っているのだが、JSON の構造がイケてなくて苦労している。 こんな感じの JSON があったとする。 { "user": { "name": "RJ", "age": "20", "image": [ { "#text": "https://lastf…

iOS Test Night #6 1周年 まとめ #ios_test_night

testnight.connpass.com iOS Test Night #6 にブログ枠として参加したので、そのレポートです。 ㊗️ 1周年 開始前の挨拶として、Qiita に投稿された iOS のテスト関連の記事がこの一年で増えたのか? という話から始まりました。 結果として、増えはしたけど…

MusicPlayer で音楽を再生しようとしたら __abort_with_payload というエラーが出た

import MediaPlayer ... override func viewDidLoad() { super.viewDidLoad() let player = MPMusicPlayerController.systemMusicPlayer player.setQueue(with: MPMediaQuery.songs()) player.play() } これで音楽が再生できたんだけど、再生開始した瞬間に…

UIView の Swipe イベントは実行して Tap は後ろの View に流したいけど出来なさそう

とある View の上に透明な UIView を載せて、 Swipe だったら透明な View でイベントをハンドリングして Tap だったら後ろの View にスルーしようとしたけど出来なさそうだった。 どういうことか こういう View があって、右にスワイプしたら数値を200にして…

個人アプリを Xcode9 Swift4 対応した時にやったこと

個人アプリ2つを Xcode9 GM で動くようにした。 これは私のアプリの場合なので、違うプロジェクトでは不要なことや、他にもっとやらないといけないことがあると思う。 やったこと 1. Xcode9 DL Xcode - Apple Developer から DL してインストール。 Xcode8も…

UITabBar の背景をすりガラスのまま Dark にする

普通の UITabBar は明るいすりガラスだけど、これを UIBlurEffect(style: .dark) と同じように暗くしたい。 Light Dark override func viewDidLoad() { super.viewDidLoad() tabBar.backgroundImage = UIImage() let dummy = UIToolbar(frame: tabBar.bounds…

TodayViewController の viewDidLoad が呼ばれるタイミングについて

iOS の TodayExtension を実装していて、 TodayViewController の viewDidLoad が走るタイミングが最初はわからず苦労した。 viewDidLoad が呼ばれるタイミング 画面に表示されたタイミングで ほぼ毎回 viewDidLoad が呼ばれる。 TodayExtension を 10 こく…

Swift2 から Swift3 への移行がだるすぎて諦めた

1年前くらいにリリースしたアプリ があるのだが、動かなくなったというレビューがきたので修正しようと思ったのだがだるすぎる。 何がだるいかというと、 Swift3への対応が一番だるい。ライブラリを更新して、マイグレーションして… ってやらないといけない…

「モバイルアプリ開発エキスパート養成読本」を読んだ

モバイルアプリ開発エキスパート養成読本 (Software Design plus)作者: 山戸茂樹,坂田晃一,黒川洋,藤田琢磨,山田航,田坂和暢,熊谷知子,森本利博,坂本和大,小形昌樹,鈴木大貴,志甫侑紀出版社/メーカー: 技術評論社発売日: 2017/04/11メディア: 大型本この商品…

RxSwift で NotificationCenter を使う

Notification を送る側 let name = Notification.Name("notification") NotificationCenter.default.post(name: name, object: nil, userInfo: ["key": "value"]) Notifiactin を受ける側 disposeBag があるので購読やめるとかしないでよい。 NotificationCe…

iOS Test Night #3 でカバレッジの計測について話してきた

カバレッジについて話したが、カバレッジが高けりゃいいわけじゃなくて、計算ロジックとかは絶対に書いた方がいいけどそうではないところは書くメリット小さいかなと思っている。 とはいえテストがないと影響範囲読めないし、「俺たちが書くコードは完璧だか…

Swift 実践入門 を読んだ

Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)作者: 石川洋資,西山勇世出版社/メーカー: 技術評論社発売日: 2017/02/07メディア: 単行本(ソフトカバー)この商品を含むブログを見る 全体感想 良い本だった、書名になっている…

特定の UITableViewCell だけ separator の線消したい

tableView で この cell だけ separator 消したいよ〜 という時の方法。 ググると、全ての tableView の separator 消して追加したいやつだけ追加するコード書こうとか、全部の tableView の線を消す方法とか出るけど、特定の cell だけ separator 消す とい…

RxSwift をやる前にちゃんと Observer パターンを学ぶ

RxSwift やるぞ!と思ったはいいものの、ちゃんと Observer パターンを学んだことがなかったので Swift でゼロから書いてみる。 Observer パターン Observer パターン - デザインパターン入門 - IT専科 観察者が何かを監視していて、その監視対象に更新があ…

WKWebView で target = _blank と POST の組み合わせ注意

target = _blank かつ POST リクエストの際に画面が表示されないバグを出してしまったので気をつけないといけない。 WKWebViewでtarget="_blank"なリンクが開かない時の対処法 - Qiita のコメント欄で注意喚起がされている。 target="_blank" を強引にメイン…

Swiftの文法などのメモ

詳細! Swift iPhoneアプリ開発 入門ノート Swift 1.1+Xcode 6.1+iOS 8.1対応作者: 大重美幸出版社/メーカー: ソーテック社発売日: 2014/12/13メディア: 単行本この商品を含むブログ (2件) を見る 最近Swiftの勉強をしていて、詳細!Swiftを読みながらメモを書…