Swift

画像とラベルを縦に並べる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を更新する処理な…