杏z学習帳

Swift、Unityなどを中心に節操なく手を出してますまる

[Swift]IQKeyboardManagerでPrev/Nextボタンが表示されない場合の対処方法

ざっくりまとめ。 IQKeyboardManagerを使用していてもキーボード表示時にPrev/Nextボタンが表示されないケースがある。 ネストが深いView構造をしていると発生するっぽい? その場合は、対象のTextFieldの共通の親ViewになるものをIQPreviousNextViewにする です。

[Swift]SwiftlineをSwiftPackageManager 4.0対応した話

ざっくりまとめ。 SwiftlineをSwiftPM v4系で使いたい 本家は放置されているっぽいので、Forkして対応する SwiftPM v4を使うということを明示 さらにPackage.swiftにlibrary名などを追加で記述設定 です。

[Swift]viewForHeaderInSectionがめっちゃ呼ばれる

ざっくりまとめ。 UITableViewでstyleをgroupedにする そしてheaderを非表示にするべく heightは.leastNormalMagnitudeを返す viewはnilを返す そうするとスクロールするたびにviewForHeaderInSectionが呼ばれ続ける そしてStoryboardで実装した場合とコードだけで実装した場合で挙動が変わる 最後のは意味がわからない です。

[Swift]文字列内でOptional型を埋め込んだ時のアレをStringInterpolationをいじって回避したった

ざっくりまとめ。 StringInterpolationと聞いてピンときますか? StringInterpolationとは文字列補間という意味らしくて、文字列内で変数の値を展開してくれる例のアレです "text: \(text)"こういう感じのやつです この展開は便利だけれどOptionalの場合ちょっと困ります "text: Optional("nullable")"上記の例でtextがOptionalだとこうなる Swift5からStringInterpolationをカスタマイズできるのでこの問題をサクッと回避できます! です。

[Swift]didEndDisplayingCellが呼ばれたからと言って表示されていないわけじゃない

ざっくりまとめ。 UITableView.relodRows()を実行すると予期せぬdidEndDisplaying cellが呼ばれる cellForAtRow -> willDisplay cell -> didEndDisplaying の発生順 Cell自体は表示されているので本来呼ばれるべきではないのでは? 回避策はreloadData()ぐらいしか思い浮かばない 求むよい解決策(笑) です。

[Swift]UniversalLinksがストア版だと動かなかった

ざっくりまとめ。 AppStoreから落としてきたやつだとUnivesalLinksが動かない Developだと問題なく動いている production.entitlementsが更新されていなかった ちゃんと確認しましょう! です。

[Swift]Titleを空にしたTabBarの調整が思いの外めんどくさかった

ざっくりまとめ。 UITabBarController でアイコンだけ表示したい タイトルを空にするだけだと不十分で、位置調整が必要 iPad対応もしようとするとさらにひと手間必要 iPad はタイトルとアイコンが上下じゃなくて左右にならぶ ただし iOS 10 以下は iPhone と同じ上下 です。

[Swift]KAKUSANっていうライブラリ作った

ざっくりまとめ。 KAKUSANというライブラリを作った ユーザがスクリーンショットをとったのを検知するとシェアを促すというもの テキストやURLを任意なものでシェアをできる Notificationでユーザがスクリーンショットをとったということを検知できる 実は(?)Notification.Name を指定しないと全部受信できる です。

[Swift]Share Extension…もしかしてメモリリークしてるかもっていう話

ざっくりまとめ。 Share Extensionで実装している共有画面を繰り返し開いていると落ちる 詳しく見ていくと、繰り返し表示していると使用中メモリがもりもり増えていく 何かが原因でメモリリークしている? プレビューを排除するとメモリが増えていくことがなくなって落ちなくなった! です。

[Swift]ローカル通知が届かない問題

ざっくりまとめ。 ローカル通知が動いていないことに気づく 単に、通知許可とっていないだけだった そもそも error とかでないの? です。

[Swift]DeallocationCheckerをv3.0にあげたときの注意点

ざっくりまとめ。 DeallocationChecker を v2.0.1 から v3.0 をあげた dch_checkDeallocation() は deprecated だと怒られる DeallocationChecker.shared.checkDeallocation() に修正 error とか warning とかはでないけどまだやることがある! DeallocationChecker.shared.setup() が必要 です。

[Swift]3D Touch Shortcuts のメニューの並びについて

ざっくりまとめ。 3D Touch Shortcuts 実装した 表示されるメニューの並びがかわる? 対象のアプリアイコンが上半分か下半分どっちにあるかでかわる plist で指定した順に上からという並びではないみたい です。

[Swift]アプリアイコンをユーザが選択可能にする方法

ざっくりまとめ。 アイコンを用意します info.plist を編集します 任意のタイミングで setAlternateIconName(_:completionHandler:) を実行する です。

[Swift]NSExtensionActivationRuleを勘違いしていた

ざっくりまとめ。 Share Extension の `NSExtensionActivationRule` を勘違いしていた NSExtensionActivationSupportsText を false にしたときにサポートしないだけでアプリ自体は表示されると思っていた 仕様上いらないものでも受け入れられるように設定しておくほうが良いかもしれない です。

[Swift]WKUserContentController.add(_:name:)を使うときに気をつけること

ざっくりまとめ。 WKUserContentController.add(_:name:) を使うとwebとアプリ側でやりとりができる 注意しないとメモリーリークするぞ add したなら remove もセットで実装しましょう です。

[Swift]Cookieの削除

ざっくりまとめ。 WKWebsiteDataStore.removeData(ofTypes:modifiedSince:completionHandler:) でざっくり削除できる ドメイン単位でやるなら、WKWebsiteDataStore.removeData(ofTypes:for:completionHandler:) を利用して削除する さらに詳細に条件を指定したいなら WKHTTPCookieStore.delete(_:completionHandler:) を利用して削除する です。

[Swift]シンプルなImageViewerをつくった

ざっくりまとめ。 ANZSingleImageViewer っていう画像ビューワーつくりました 特定の UIImage を表示する 拡大・縮小表示できる ZoomTransition もできる 開発話 つくった理由 ハマったところ です。

[Swift]SwiftPMで作ったものがMintで実行できない...

ざっくりまとめ。 Mint で作ったCLIアプリが実行できない Executable product not found とかいわれる Mint のバージョンが怪しい...!? Package.swift に products を追記したらイケた! です。

[Swift]名刺代わりになる(?)CLIアプリ作ってみた

ざっくりまとめ。 名刺代わりにCLIアプリ!? 作るしか無い!Swiftで... 作った! Mint でお手軽に実行できます! です。

[Swift]スワイプで戻る操作のキャンセルを検知したい

ざっくりまとめ。 スワイプで戻る操作を途中でキャンセルした場合を検知したい...どうしたら notifyWhenInteractionChanges(_:) で検知できる! なぜそのような物が必要になったのかっていう雑談 です。