2019年2月7日のブックマーク (7件)

  • 関数型リアクティブプログラミング言語Elmに学ぶ フロントエンド開発の新しい形 【前編】

    前編では、Elm言語の基礎とFRPのエッセンスについてコードを通じて学びます。 後編では、実際にElmを使ってアプリケーションを作る方法と、その際に重要になるアーキテクチャを学びます。 なお、執筆時点でのElmのバージョンは0.15.1です。 注意! Elmはバージョン0.17で大きな変更がありました。現在は「関数型リアクティブプログラミング」のための言語ではありません。 参考:A Farewell to FRP(さらば FRP) また、言語自体のシンタックスやライブラリのAPIも以前とは大きく変わっています。これからElmを始める方は、必ず公式ドキュメントを参照してください。 公式ガイド FRPとは何か リアクティブプログラミングの直感的な説明としてよく挙げられるのが、Excelのような表計算ソフトです。 例えば、セルの間にC1 = A1 + B1という関係があるとします。 このように宣

    関数型リアクティブプログラミング言語Elmに学ぶ フロントエンド開発の新しい形 【前編】
    yimajo
    yimajo 2019/02/07
    FRPの歴史
  • Swift4のKVOに新しいクロージャ関数が導入されました - Qiita

    // observeの結果を格納 private var keyValueObservations = [NSKeyValueObservation]() // UIScrollViewの移動を感知してclosureを実行する private func addKVO(scrollView: UIScrollView, _ closure: @escaping ()->Void) { let keyValueObservation = scrollView.observe(\.contentOffset, options: [.new, .old]) { _, change in if change.newValue == nil { return } closure() // キーボードを消すとか・・・ } keyValueObservations.append(keyValueObser

    Swift4のKVOに新しいクロージャ関数が導入されました - Qiita
    yimajo
    yimajo 2019/02/07
  • UIViewをアニメーションで回転させて、角度を取得する方法 - Qiita

    // 一時停止 func stopRotate() { let layer = pathDrawView.layer // 角度を取得する let transform: CATransform3D = layer.presentation()!.transform let angle: CGFloat = atan2(transform.m12, transform.m11) var testAngle = radiansToDegress(radians: angle) + 90 if testAngle < 0 { testAngle = 360 + testAngle } print("角度", testAngle) angleLabel.text = String("\(Int(testAngle))°") // アニメーションを停止する layer.speed = 0.0 } f

    UIViewをアニメーションで回転させて、角度を取得する方法 - Qiita
    yimajo
    yimajo 2019/02/07
    “radiansToDegress”
  • iOSアプリ開発でアニメーションするなら押さえておきたい基礎 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    iOSアプリ開発でアニメーションするなら押さえておきたい基礎 - Qiita
    yimajo
    yimajo 2019/02/07
    “UIKitのアニメーションでもrotationのアニメーションはview.layer.transformの変更で可能ですが、Core Animationを使って下記のようにやるのが個人的には好きです”
  • AppleのCore Animationプログラミングガイドを読んだメモ - Qiita

    Appleが提供しているプログラミングガイドは全部読んだほうがいいなーと思っています。 目下、興味のあるところから順次読み込み中。 今回は[PDF] Core Animationプログラミングガイドを読んだので、覚えておいたほうがいいところとかをピックアップし、自分なりの考察なんかを加えて書いています。 UIView/CALayerの基構造 画面になにかを表示しようとした時、使うのはUIViewかそのサブクラスを使うのが通常です。 addSubview:メソッドなど使って階層構造を成して構築していきますね。 普通はUIViewを使えば問題ありませんが、描画のパフォーマンスやちょっとした細かい演出などをしたい場合はCALayerを利用します。 やはりどういう構造になって画面に表示されているか、を知るのは大事なことですね。 UIViewは通常、レンダリング周りを担当するCALayerクラスを

    AppleのCore Animationプログラミングガイドを読んだメモ - Qiita
    yimajo
    yimajo 2019/02/07
  • transform中の座標取得 | Tabs

    CGAffineTransformを使用して画像を変化させている最中の座標取得方法は下記の通りです。 UIImageView *hoge; CALayer *layer = hoge.layer.presentationLayer; float hogeY = [[layer valueForKeyPath:@”transform.translation.y”]floatValue]; これで移動中のy座標を取得できます。 また、変化中の画像の大きさ(width)の値を知りたい場合は CALayer *layer = hoge.layer.presentationLayer; float hogeW = [[layer valueForKeyPath:@”transform.scale.x”]floatValue]; となります。 画像の大きさなので「width」だから「transform

    yimajo
    yimajo 2019/02/07
    “transform.translation.y”
  • もう迷わない convertRect

    私だけなのかもしれないですが、座標を変換するメソッド [UIView convertRect:toView:] がとても苦手でした。座標を変換するだけなはずなのに、いつも引数とレシーバの関係がわからなくなってしまい、総当たりで正しいと思う値を探し出すというエンジニア失格なことをしていました。 これじゃまずい、と思って時間をかけて整理したおかげで、ようやく理解ができました。 もし、自分と同じ悩みを抱えている人がいたら参考にしていただければと思います。 迷っていた原因 私が [UIView convertRect:toView:] で迷っていた原因は、第 1 引数の CGRect を大きく勘違いしていたせいでした。 第 1 引数の CGRect は多くの場合、変換したい座標を持つ View の frame や bounds を指定することが多いと思います。[self convertRect:s

    もう迷わない convertRect
    yimajo
    yimajo 2019/02/07
    わかりやすい実例