Swift

ナビゲーションのタイトルカラーを画面ごとに変更する

バージョン Xcode Version 10.0 (10A255) Swift4.2 やりたいこと 最初の画面はタイトルカラー赤 遷移先の画面はタイトルカラー青 実装1 ググるととよく出てくるやつ。 ただ、これだと最初の画面に戻った時に青のままです。 遷移元ViewController class ViewC…

Swiftのランタイムエラーを捕捉する

アプリがクラッシュした際に、ちょっとした後片付け的な処理をしたくて調べてた。 バージョン Xcode 9.4 Swift4.1 NSSetUncaughtExceptionHandler ググると、これがよく引っかかる。 NSSetUncaughtExceptionHandler(_:) - Foundation | Apple Developer Docu…

画像とラベルを縦に並べるUIButtonのカスタムクラス

はじめに たまに必要になるので、こんな感じに画像とラベルを縦に並べるUIButtonのカスタムクラスを作りました。 contentEdgeInsetsとか毎回調整するのめんどくさいですよね。 探せばライブラリとかもあるとは思うけど勉強も兼ねて車輪の再発明です。 コード…

Swiftでクロージャが入れ子の場合のキャプチャリスト

はじめに Swiftのクロージャには循環参照を回避するための仕組みとしてキャプチャリストがあります。 最近、キャプチャリストがあるのにメモリリークするというバグに遭遇して、自分の認識が間違っていたことが分かったのでメモしておきます。 結論としては…

iOSで画像をリサイズして保存するときに気をつけること

はじめに カメラロールからユーザーが選んだ画像をUIImageViewに表示してから、リサイズしてファイル保存する際に、ちょっとはまったのでメモ。 バージョン Xcode9.0.1 Swift4.0 やりたかったこと ユーザーが選択した画像ファイルを一定の幅にリサイズして保…

UIVIewController.viewの生成タイミング

Instantiateというライブラリがあります。 github.com StoryboardやXibを使いつつコンストラクタインジェクションできる素敵ライブラリなのですが、コードを読んでてよくわからなかったところがありました。 Instantiate/Storyboard+UIViewController.swift …

Swiftはプロパティもオーバーライドできる

バージョン Swift 3.0.2 Xcode 8.2.1 クラスのプロパティ 知らなかっただけなのですが、Swiftはプロパティもオーバーライドできます。 使い方次第で便利に使えそう。 サンプルコード プロパティのオーバーライドとプロパティ監視を組み合わせて、ボタンが無…

配列の要素をオプショナルバインディング

はじめに コードレビューで、ちょっと不思議なコードがあったのでメモ。 結論 配列の添字アクセスをオプショナルバインディングしてもビルドエラーにならないけど、わかりにくいのでやめたほうがいい。 コード var hoge:[Int] = [] // hogeを更新する処理な…