swift

Storyboard よりも Xib を使いたい理由

これは Aizu Advent Calendar 2018 の 7日目の記事です。 6 日目は id:acomagu さんで、8 日目は id:NoahOrberg さんです。 adventar.org はじめに Interface Builder (以下「IB」という。) で UIViewController のレイアウトを組むには、 Storyboard と Xib…

HLS形式の動画から字幕を取得する

HLS形式の動画から字幕情報を取得する機会があり、その実装を試みたがハマった。調べた限りこれに関する記事が無かったため、今回は記事として残す。 字幕情報を取得するには? AVPlayerItemLegibleOutput を使用する。 AVPlayerItemLegibleOutput は、デリ…

RxSwiftでUIPickerViewとUITextFieldのテキストをバインドする

最近RxSwiftの勉強をしていて思いついたバインドをやってみる。 UIPickerViewからデータを選択し、そのデータをUITextFieldのテキストにセットするものである。 UIPickerViewをUITextFieldの入力として使用する まずUIPickerViewをUITextFieldの入力のViewと…

CharacterSetを定義する

CharacterSetとは 言葉通り文字の集合である。Appleのドキュメントにも書いてあるが、文字列の中から特定の文字を検索したいときなどに使う構造体。自分も以前そのような用途で使ったことがある。 CharacterSet - Foundation | Apple Developer Documentatio…

NSCodingをSwiftyにしてみる

NSCodingについて Swiftにはクラスをシリアライズ, デシリアライズするためにNSCodingが用意されている。 そのクラスをシリアライズ, デシリアライズするには、NSCodingに準拠させ、2つのメソッド(func encode(with aCoder: NSCoder)とinit?(coder aDecoder:…

Swiftで型推論を使っていきたい

省略について Swiftには型名.varibaleHogeと書くところを型がわかっている場合は.varibaleHogeと書ける。 例えば以下のような感じ。 // textAlignmentはNSTextAlignment(enum)で、centerが定義されている UILabel().textAlignment = .center // centerはCGPo…

UITextFieldを空の状態からデリートキーを検出する

文字入力の検出 まずUITextFieldにおいて文字入力を検出するには主に2つの方法がある。 一つはUITextFieldDelegateを準拠し、textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Boolを…

Swift Package Manager対応フレームワークをCarthageにも対応させる

Swift Package Managerについて Swiftが標準で提供しているライブラリ管理ツール。SPMとも略される。 フレームワークを配布するには、Package.swiftにフレームワークの依存関係などを書いてSources/にソースコードを置く。さらにそのディレクトリをgithubに…

Swiftのoptional funcでenumを使いたい時

protocolについて まずswiftにはprotocolが用意されている。例えばUIKit系のクラスではよくdelegateやdataSourceが用意されていて、他のクラスに処理を委譲する設計になっている。delegateやdataSourceを継承したクラスはその処理を書かなければならない。 c…

UIColorからCIColorの変換で少しはまった話

エラー概要 先日iOSアプリの開発中にCIColor型で黒色の値を取得しようとして次のようなコードを書いた。 let blackColor: CIColor = UIColor.black.ciColor ビルドしてもエラーがないので、このままRun出来ると思ったらこのエラーでアプリが落ちた。 reason:…