2014年4月24日木曜日

iOS4からのアニメーションはanimateWithDuration: が標準

いままで、Viewのアニメーションは、beginAnimations:を使ってたけど、なんとiOS4からは、ブロック構文をつかったanimateWithDurationが普通なのな。

なぜここに行き着いたかというと、アニメーションを2つ続けるとうまく動かない(並列動作してしまう)ため、もう少しうまく動かしたかったためです。

で、結果は次のコード。隠してからcompletionで表示すればいいということになります。

今ひとつ文法理解していないけど、こういうことですw


- (void)hideAndShow_hideView:(UIView *)hideView showView:(UIView *)showView{
    // アニメーションでビューを隠す
    self.view.frame = CGRectMake(0, [[UIScreen mainScreen] bounds].size.height-100, [[UIScreen mainScreen] bounds].size.width, 100);
    [UIView animateWithDuration:1.0f
                          delay:0.0f
                        options:UIViewAnimationOptionCurveEaseInOut
                     animations:^{
                         self.view.frame = CGRectMake(0, [[UIScreen mainScreen] bounds].size.height-50, [[UIScreen mainScreen] bounds].size.width, 100);
                     }
                     completion:^(BOOL finished){
                         hideView.hidden = YES;
                         showView.hidden = NO;
                         [UIView animateWithDuration:1.0f
                                               delay:0.0f
                                             options:UIViewAnimationOptionCurveEaseInOut
                                          animations:^{
                                              self.view.frame = CGRectMake(0, [[UIScreen mainScreen] bounds].size.height-100, [[UIScreen mainScreen] bounds].size.width, 100);
                                          }
                                          completion:^(BOOL finished){
                                          }
                          ];
                     }
     ];

}

2014年4月22日火曜日

UITabbarControllerでTabbarItemが灰色で見えない

これ絶対ハマりません?

自分はXCodeが壊れたかとおもって、XCode再インストールまでしちゃいましたよ。ディスクユーティリティでアクセス権も治したし。ほんとかんべんしてほしい。

正解はどうやら、TabbarItemがCustumになっていることから来ているらしい。

しかも修正は飛び先のItemをCustumから他のものにした上でSegueを繋ぎ直すというなんともな仕様。どうにかしてほしいなう。

で無事灰色がなくなりました。っていうかググっても出てこなかったんですが、皆んな困ってないのかね。ま、いいけど。1日損したわ・・・

2014年4月20日日曜日

Wahoo Fitness API

Wahoo ハートレートモニターがやって来ました。

何故購入したかというと、甲状腺機能亢進のため心拍が高くなる傾向にあり、高いときには抑えるためにβ遮断薬を服用しなくてはならないからです。

1日3回飲めばいいのですが、忘れたり、規定通りの服用でもいいとも限らないので常時チェックしたい。

運動アプリでモニターすればいいのかもしれないですが、今ひとつ用途がちがうもので、自分で作ろうかしらん、という感じです。



APIドキュメントについては、XCode5以上ですとWebサイトにある方法ではドキュメントは入れられません。そのためには、WahooからもらえるSDKにある*.docsetを、Finderで「このMac」を選択したあと、右上で「DocSets」と検索してでてくるDocSetsフォルダに入れ込みます。XCode5を再起動し、Window-Documentation and API Referenceを選択するとWahoo APIのリファレンスが見れます(といってもWebサイトと変わりなさそうです)。



Wahoo Fitness APIは、WFHardwareConnector というクラスとして提供されます。WFHardwareConnectorはANT+ とBTLEセンサーの設定やデータ取得が可能です。

− 下準備

❏プロジェクトの設定
  プロジェクトのBuild SettingsのLinking セクションにあるOther Linker Flagsで、-lstdc++ -all_load  を設定します。

❏ターゲットの設定
  ターゲットのBuild PhasesにあるLink Binary With Librariesで+ボタンを押下し、Add Other... ボタンを押し、ダウンロードしたWahoo Fiitness APIにあるWFConnector.frameworkを選択する。さらにiOS標準のフレームワークのうち、ExternalAccessory.framework、CoreBluetooth.framework、libstdc++.dylib(iOS7 SDKの場合)を指定する。その際、CoreBluetooth.frameworkはOptionalを指定する。

❏アプリケーションバンドルの設定
 アクセサリ接続とバックグラウンド動作のため info.plistに次を設定する。
    Supported external accessory protocols  のitemにcom.momentumoftechnology.fisica 

    Required background modes のitemにexternal-accessory, と bluetooth-central 

注)prepareForBackground (WFHardwareConnector)がバックグラウンドモードと転送準備のためにリソースを初期設定する。しかしreturnFromBackground (WFHardwareConnectorと合わせて、iOS5.0以降ではこれらメソッドは不要。バックグラウンド操作では以下が必要。

さらにマニュアルにはありませんが、Wahoo Fitness APIではarm64がサポートされていません。そのため、プロジェクトのBuild SettingsのArchitecuresで、ArchitecuresをStandard(armv7,armv7s,arm64)からothersで、$(〜STANDARDS)とかを削除して、armv7とarmv7Sをそれぞれ+し(一緒にいれてはいけません)、Build Active Architecure OnlyをたぶんNO(かな?)、Vaild Architecures でarm64を削除します。

これでサンプルとかがコンパイルできるようになります。