タグ

ブックマーク / www.kuma-de.com (12)

  • [iOS] BackboneのModelをSwiftでも使いたいたいので部分的に書いてみた « きんくまデザイン

    こんにちは。きんくまです。 Backbone.jsのModelとかCollectionをSwiftでも使いたいなと思って、機能限定だけど作ってみました。 JavaScriptのオリジナルのソースを見つつSwiftに書き直してみました。 学習目的で作ったものだと思ってくださいまし。 >> BBModel 作ったのは3つのクラスです。 Events, Model, Collection サーバーとの通信、Collectionクラスのsortとwhereなどが抜けています。 インストール 3つのswiftクラスのファイルをコピペしてください。 iOS8 からはFrameworkでいれられるかも。 Events on(イベント名)でコールバックが登録できます。 var event:Events = Events() event.on("myevent") { (events, options) -

    efcl
    efcl 2015/02/16
    SwiftでBackbone的なMVC
  • [iOS] StoryboardとUICollectionViewを使う « きんくまデザイン

    こんにちは。きんくまです。 iOSでUIを作るときに、いままでコードで全部書いてきて、いっさいInterfaceBuilderを使っていませんでした。 ただ、もうUIのコードを見るのが大変になってきてしまって、困ったなーという状態です。 なので、ここらでIBをやってみようと思いました。 ちょっと前にこのを買いました。 中身はUIKitをどうやって扱うかというものです。細かいコンポーネント(UINavigationやUIButton, UISwitch)は特別ページを割いていなくて、StoryboardをInterfaceBuilder使ってやる方法とか、AutoLayout、UIAppearanceなどが載っていました。 あとは、最後の方にUITableViewや、UICollectionView、コンテナビュー関連があります。 で、Sotryboardを使った感想としては、「これは便利

    [iOS] StoryboardとUICollectionViewを使う « きんくまデザイン
    efcl
    efcl 2014/07/04
    CollectionViewでカラーパレット
  • [iOS] アプリ開発日記 スパゲティ化した初期化処理をなんとかする « きんくまデザイン

    こんにちは。きんくまです。 Habit Keeperという日課アプリをAppStoreで発売しております。 で、今回はそのアップデートの日記みたいなものです。 前回最後にアップデートしたのが3月でして、そろそろ次のアップデートをしたいなと思ってます。 というか、アップデートをしたかったんですが、どうやっていいかわからず困ってしまっていたというのが正直なところです。 えーと、機能が増えていくと、あちらを立てるとこちらが立たずとか、このときにこうなるとか、分岐が増えていったりします。 なるべく依存関係はなくすように書いているのですが、機能が増えるとどうしても重なる部分が出てきてしまって、いろいろと考えることが増えていくんですよね、、。 よくやってたプログラムの流れ これまで、FlashとかJSとかクライアント系プログラムで自分がよくやってた流れを図にしてみました。 ユーザー入力を受け付けてから

    efcl
    efcl 2013/05/24
    初期化処理のフロー図
  • [iOS] NSFetchedResultsControllerをつかって、手動で並び替えするときのコード « きんくまデザイン

    こんにちは。きんくまです。 個人的メモです。すんません。 CoreDataを使って、手動で並び替えをしたかったので調べてました。 Matt Long さんが書いている記事が参考になります。 >> RE-ORDERING NSFETCHEDRESULTSCONTROLLER ただ、このままだと自分の方だとうまくいかなかったので、調整しました。 並び替えをしたいEntityのAttributesにdisplayOrderを追加。Integer32にしといた。 fetchedResultsControllerをつくるときにdisplayOrderでソート 例えば、Xcodeのテンプレートからできるやつでやると - (NSFetchedResultsController *)fetchedResultsController { if (_fetchedResultsController != ni

    efcl
    efcl 2013/01/25
    CoreDataのEntityにorder用の属性を持たせてソート
  • [iOS] Core AnimationのCAMediaTimingFunctionでRobert Pennerのイージングを近似 « きんくまデザイン

    こんにちは。きんくまです。 Core AnimationのCABasicAnimationのイージングはAppleが用意したデフォルトの値がいくつかあります。 kCAMediaTimingFunctionLinearとかkCAMediaTimingFunctionEaseInとか。 それでその5つで指定するのも良いんですが、この間リファレンスを見ていたところ、 オリジナルのベジェカーブでもOKだということを見つけました。 – initWithControlPoints::::のところ。 >> CAMediaTimingFunction Class Reference そうかそうかと。以前にもCSS3のTransitionのライブラリを作ったときにすでにベジェをトレースして4点とったものがあったので、こいつを使えば簡単そうということでやってみました。 ソースコードとサンプルコードはgithu

    efcl
    efcl 2013/01/04
    Core Animationのアニメーションカーブについて
  • [iOS] 日課 / 習慣 / ルーチンワークを記録するiPhoneアプリのHabitKeeper バージョン1.2にアップデートしました。あと使ったライブラリとか。 « きんくまデザイン

    こんにちは。きんくまです。 HabitKeeperがバージョン1.2にアップデートしました。 今、年末年始セールやっているので、よかったらチェックしてみてくださいませ。 今回のアップデートは、新規リピート機能の追加です。月のうちの特定の日の指定が可能になりました。 こんな感じです。 それで、次回のバージョンはiCloud対応させようと勉強中です。 いろいろと考慮しなくちゃいけないことなどが多く、ムズイですね、、。 後回しにしちゃおうかな、、。 その他にもいろいろとユーザーの方からご要望をいただいているので、そちらも実装していきたいと思っておりますです。 んで、宣伝ばっかりだとつまんないので、今回のアップデートで使ったライブラリとか、テクとかの紹介です。 MBProgressHUD MBProgressHUDはAndroidのToastみたいな機能を実装するライブラリです。 ポップアップでい

    efcl
    efcl 2012/12/20
    ビット演算によるデータの保存. カレンダーの日付チェック管理
  • [iOS] Protocol – Delegateパターン | Objective-C イベント伝達 その1 « きんくまデザイン

    12/07/06 追記 delegateのコードを修正しました。 delegateはretainでなくて、assignにした方が良いみたいです。 その場合は、deallocの中のreleaseも必要なくなります。 参考 >> Why are Objective-C delegates usually given the property assign instead of retain? AがBを作り、BのdelegateにAをセットする。 BがretainでAをもつことにより、AとBが互いにretainで参照を持つことになります。 そうなってしまうと、BをreleaseしようとしてもAをretainしているためにreleaseできずにメモリリークするということのようです。 —————- こんにちは。きんくまです。 今回から何回かに分けて、Objective-C でのイベント伝達の扱い方に

    efcl
    efcl 2012/07/22
    delegateパターンについて
  • [iOS] チェックボックスをつけたUITableViewCellをつくる « きんくまデザイン

    こんにちは。きんくまです。 チェックボックスをつけたUITableViewCellを作るのにちょっとハマったのでメモです。 UITableViewCellのサブクラスでチェックボックスを作るところまではいいのですが、 このセルには情報を保存しておけないのでした。 UITableViewDataSourceの– tableView:cellForRowAtIndexPath: で画面から見えなくなったセルを破棄したり、これから見えるセルを自動作成してくれます。 それでセルを作成する際に、dequeueReusableCellWithIdentifierでキャッシュされているセルを使う場合があります。 このキャッシュがくせ者で、サブクラスの中に情報を埋め込んでいても、予想とは違うキャッシュされたセルがひっぱられることがあります。 例えばindexPathのデータをセルにいれても、セルとinde

    efcl
    efcl 2012/07/22
    チェックボックス付きのUITableViewCellを作成する
  • [iOS] Objective-C @propertyについて « きんくまデザイン

    こんにちは。きんくまです。 今回はObjective-Cの@propertyについてのまとめです。 ARCは使ってないバージョンです。 公式のリファレンスです。 >> Declared Properties Obj-Cをはじめた当初はよくわからないながらも何となく使っていたのですが、 いろいろとわかってきたのでまとめておこうと思いました。 @propertyはカタカナに直すとプロパティだから、別言語から来た人(私)は 何か実体のあるもののような気がするのですが、そうではなくて 実際はアクセサメソッド(getter, setter)のことです。 なので、クラス外からアクセスするときに必要に応じて定義するとよいです。 最初私はよくわからず、インスタンス変数に全てプロパティを定義していたのはナイショです。 @propertyを使わないでインスタンス変数にアクセス = KVC ではまずは@prop

    efcl
    efcl 2012/06/26
    @property/synthesizeについて
  • [iOS] AppCodeは良いエディタ « きんくまデザイン

    こんにちは。きんくまです。 この1ヶ月ほどiOSアプリと平行して、久しぶりにFlash案件をやっていたのですが、 Objective-Cと比べて、短いコードで同じようなことができる、あの手軽さはやはり良いものですね。 アニメーションを使ったページも、スクリプトとタイムラインを上手に組み合わせられて◎です。 さて、AppCodeです。 >> AppCode 前回記事にしてから、実際にずっと使ってました。 その感想などを書こうと思います。 最初に結論から書くと、良いツールなので買うと思います。 まだ使用期限がきてないから買ってないけど、期限きたら買うつもりです。 AppCodeはXcodeと併用して使うもの 使う前は、AppCodeはXcodeを置き換えるものだと思っていました。 ところが、これが勘違いだとわかりました。 AppCodeはコーディングを助けてくれるエディタです。 Xcode >

    efcl
    efcl 2012/06/23
    AppCodeの紹介
  • [iOS] グラフィックス関係のおおざっぱな説明 Quarz 2D, Core Graphics, Core Animation « きんくまデザイン

    こんにちは。きんくまです。 iOSのグラフィックス関係はすごく大きくて、最初はどこから手をつけていいのかわかりませんでした。 そんで、概要みたいのが合った方が、理解が早いと思い、私のおおざっぱな理解をメモしておきます。 グラフィックスには、大きく2つの要素があります。 描画の方法と、描画される入れ物です。 描画について 大きく分けて、2つです。 Quartz 2D APIとOpenGL ES。 Quartz 2D APIはCore Graphics frameworkの一部です。 メソッドの頭文字にCGとつくものがそれだったりします。 OpenGL ESはAppleとは別のところで決めているものです。 今回はQuarz 2Dについてもう少し書きます。 Quarz 2DにはGraphics Contextというのがあります。 グラフィックスの文脈なんですが、これって何なのでしょう? これは、

    efcl
    efcl 2012/04/21
    iOSのグラフィック関係のAPIについて。 CALayerの役割と特徴 CoreGraphics、CoreAnimationについて
  • [JavaScript] AS3のEventDispatcherみたいにObserverパターン « きんくまデザイン

    こんにちは。きんくまです。 AS3のEventDispatcherは便利だと思います。JSでは特に用意されていないので作りました。 こんな感じです。 var kinkuma = {}; //package name (function(pkg){ pkg.Event = function(){ this.target; this.context; }; pkg.Observer = function(){ this.listeners = {}; }; pkg.Observer.prototype = { addObserver:function(type, listener, context){ var listeners = this.listeners; if(!listeners[type]){ listeners[type] = []; } listeners[type].pus

    efcl
    efcl 2011/12/01
    observeパターンとMVC
  • 1