後で振り返るように。 action&state interface Action<ActionType> { type: ActionType; payload?: any; } enum CounterActionType { Increase, Decrease } interface CounterState { count: number; } type CounterAction = Action<CounterActionType>; function reducer(state: CounterSta</counteractiontype></actiontype>…
ディープリンク対応する際にこちらのリポジトリを参考に実装しました。 urlのパラメーター(具体的にはuser?id=0 user/:id的なやつ)はpathParameterとqueryParameterと呼ばれているらしいです。 使用例 URLの文字列をpattern文字列を指定してパースします。 …
TabBarをカスタマイズしたい 標準のUITabBarControllerだと、痒いところをカスタマイズするのが大変です。 TabBarをUIViewのサブクラスとして自作することで、自由にUIやアニメーションの実装ができるようになると思います。 UITabBarController - UIKit | A…
Literal Expressionを使って情報を付け足し出力する。 struct Logger { static func debug(_ item: Any, file: String = #file, line: Int = #line, function: String = #function) { #if DEBUG let components = [ "Debug \(Date())", "file: \(file)", "li…
AngularJSのInjectorのソースを読んでから一回DIライブラリを作って見たくなったので、何も考えずSwiftで実装してみる この方法が良い悪いの話は置いておいて、Angularのようなインターフェースを目指す。 class ApiClient {} class QiitaRepository { let c…
ググると出てくるやつ 多分 try! Swift 2016で発表があってそれのまとめ記事がよく出てくる。 protocol Pokemon { associatedtype Element var element: Element { get } } associatedtype を持つProtocolで変数を宣言するとエラーになる。 let pokemon: Pok…
moment.jsに少々手こずったが1日はかからないくらいで実装できた。 iOSだともう少し時間がかかってしまう。 ググった感じ組み方はtableタグにheader2つのやり方と、divで囲んでulで並べる感じのが多かった。 table使ったことなかったのと、多分それで組ん…
TODO: gif, refactor, github // https://gist.github.com/mjackson/5311256 class Picker { constructor() { this.view = { canvas: document.getElementById('canvas'), colorPanel: document.getElementById('colorPanel'), dummyPalette: document.getEl…
<html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>RxJS Demo</title> <style> body { font-family: 'Arial'; background: white; text-align: center;} #container…</meta></meta></meta></head></html>
タグを入力するViewを作った 以前に下のようなタグを入力する画面を作成したのですが、これもアウトプットしないと勿体ない系だと思ったので簡単にまとめます。 類似するUIを持つ具体的なアプリがすぐには思いつかないのですが、日記アプリやメモアプリなど…
SwiftでTooltipを書いた こうゆうツールチップを書きました。 こんな感じに書けます。 本当はもう少し描画周りのリファクタしたりカスタマズ性を持たせたりしたいが、そもそも自分が使わないのでこの辺でアウトプットします。 private let toolTip = Tooltip…
brew install nodebrew nodebrew -v churabou@churabou ~> nodebrew install v8.9.4 Fetching: https://nodejs.org/dist/v8.9.4/node-v8.9.4-darwin-x64.tar.gz Warning: Failed to create the file Warning: /Users/churabou/.nodebrew/src/v8.9.4/node-v8.…
はじめに iOS開発をはじめて2年が経ち自分なりにUIKitでいろんなUIを作ってきました。そろそろアウトプットとしてgoogle検索で上位でてくる古い情報を上書きしようとと思っていた矢先、SwiftUIがでてきてしまい一気にモチベーションが下がってしまいました。…
雑にまとめます。 用語が一部正しくない場合がございます。 Pathに沿ってアニメーション CAKeyframeAnimationにpositionで指定して、pathを指定してあげると パスに沿ってアニメーションします。 let anim = CAKeyframeAnimation(keyPath: "position") anim.…
トラックパッドを封印する際に必要なショートカット。 単語移動 Ctr + n Move Down TD Ctr + p Move Up TD Ctr + b Move Backward TD Ctr + f Move Forward TD Ctr + a Move To Beginning of Paragraph TD Ctr + e Move To End of Paragraph TD b n p f はma…
SwiftでMVVMのViewModelを作るとき、Viewからの入力に関していえばViewModelでObservableを保持しそれをObserverとして公開するのが一般的だと思います。 final class ViewModel { private let tapLoginSubject = PublishSubject<Void>() var tapLogin: AnyObserver<Void></void></void>…
textField.rx.text .bind(to: label.rx.text) .disposed(by: bag) textField.rx.text.asDriver() .drive(label.rx.text) .disposed(by: bag) label.reactive.text <~ textField.reactive.continuousTextValues map: do { let (signal, observer) = Signal<String, NoError>.pi</string,>…
さっと動かしてみる func test_observer() { // ①TestSchedulerを生成する (仮想時刻を0で初期化) let scheduler = TestScheduler(initialClock: 0) // ②TestObserverを生成する let observer = scheduler.createObserver(Int.self) // ③イベントを流す sche…
タイトル適当ですが、手元で動かしたものをサクッと出力。 androidのxmlとかvueやanglureのように、swiftでも宣言的にUIを定義してみようと、少しいじってみた。 こんな感じのボタンクラスがあるとして import UIKit final class Button: UIButton { conveni…
初めてクロージャーを見たときこそ関数とどう違うのかわからなかったが、 普段の開発では特に気にせず普通に使っていた。 RxSwiftのObserverクラスを見てみると少し不安になってきた。 struct Observer { var eventHandler: () -> () init(_ eventHandler: @…
Android開発に入門しました。今回はListViewを使ってみました。 ListViewを追加します。 制約を適当につけidをつけます。今回はItemListViewにしました。 実際のコード ・MainActivity class MainActivity : AppCompatActivity() { override fun onCreate(sa…
ただのメモです。 結論から言うとぴったし2倍にはならないがだいたい二倍になる。 let label = UILabel() label.textColor = .white label.backgroundColor = .red label.text = "test test test" label.center = view.center label.font = .boldSystemFont(…
iOSには画像系のライブラリで有名なCPUImageあり、これを使えば.acvファイルを使用した画像フィルターが簡単に利用できます。 しかしこの機能を外部のライブラリに頼りたくないので自分で実装してみようと思います。 完成品 トーンカーブを使うには トーンカ…
引っ張ると回転しながらサイズも変えられるラベル。よくあるらしい。 初めて見たときは、これどうやって実装するんだ??と思ったけど、ラベルの中心が変わらないことに気づけば 適当に実装しても似た感じのができた。 デモ ViewDidLoadに下記を貼ると let l…
もしかしたら悪い印象を与えるかもしれませんが、自分の思っていることを素直に書きました。一部上から目線ですいません。 1社目 株式会社L メンバー5人 早稲田の院生の先輩と同時にスタートしたが、5ヶ月後に受け入れ終了された。 当時はインターン落ちまく…
RxSwiftは学習コストが高いと言われている。 しかし2018年となった今は情報量が非常に多く日本語の記事もたくさんある。 すなわち学習難易度は低いのではないかと思う。 以下自分が2週間くらい手探りでわちゃわちゃやった結果、こんな感じで学んでいけばいい…
github.com ちゃんとMVVMになっていると思うのだがどうだろうか Inputs: UIEvent(ボタンのタップ、ViewDidLoad) outputs: Viewがタップできるか、解答中の数字文字列、問題の数字等 ViewModelのデータの変更をViewが反映できている。 ViewModelは問題のデー…
ぼかし処理 func boxBluredImage(radius: CGFloat) -> UIImage { let inputImage = CIImage(cgImage: self.cgImage!) let affineClampFilter = CIFilter(name: "CIAffineClamp")! affineClampFilter.setValue(inputImage, forKey: "inputImage") affineClamp…
現在とあるアプリの受託開発をしております。 Objc -> Swiftの移行と共にプロジェクトからIBを無くしたいとのことです。 そこでstoryboardにあるものをコード化しているのですが、作成するViewのファイルがどうしても肥大化してしまいます。 ある程度はしょ…
高校生の時から大学は遊ぶところ、やりたいことが見つからない人が行くところだと思っていた。大半の人はそうだと思う。 大学1年の秋は毎日授業があるせいでインターンの時間を確保できなかった。休学して自分でサービス作りたい!フルコミで開発して本気で…