2013年6月14日

AT-Shuffle Scrobbler Version 1.2.1

AT-Shuffle Scrobbler バージョンアップしてます。
1.2からiADを入れてます。
こういうバージョンアップは嫌がられるんだろうなーなんて思いつつ、しかたがないのだ!
と開き直り。

バージョン 1.2.1 の新機能

iAD処理のバグ修正


2013年5月24日

AT-METRONOME Version 2.61

楽器練習に最適! AT-METRONOME 久々にバージョンアップしました。
AdMobが使えなくなってしまったので(謎なんですが)省いただけ!
ネタが無いなあ。


バージョン 2.61 の新機能

AdMobモジュール削除

2013年2月9日

Androidの画像ボヤけ

最近ご無沙汰ですが、実はしばらくWebアプリの仕事してました。
そうです。Javascriptです。
基本はiOSしか頭にないんですがwww、WebアプリだとどうしてもAndroidのことも考えなくてはなりません。

正直に書きますね。 もうね、Android4ね!爆発しろ! って思います。

もう、泥君のこまった点はいろいろあったんですが、そのうちの一つを書いてみたいと思います。
画像のボヤけです。 某国製の銀河三とかでよく出ます。

これの解決策は諸説ありますが、試して確実だったのは、

CSS3の3Dトランスフォームを使う

ってことでした。
ボヤケる画像や、それが背景になったdivなどに対して、


$("#hoge").css("-webkit-transition-duration","0");
$("#hoge").css("-webkit-transform","rotateY(0deg)");


とかやると、シャキっとします!

お試しあれ。


2012年11月21日

AT-METRONOME Version 2.60

楽器練習に最適! AT-METRONOME 久々にバージョンアップしました。
iPhone5の4インチRetina画面に対応したのが主な変更です。
なんかデザインが崩れてきて若干不満なんですが、いい案が思い浮かびませんでした・・・


バージョン 2.60 の新機能

iOS6に対応しました。
iPhone5とiPadで音色が選べるようになりました。
240BPMまで選べるようになりました。

2012年10月20日

AT-Shuffle LITE Version 2.1

AT-Shuffle LITE バージョンアップしてます。
2.1になってますが2.0からiPhone5、iOS6という、やや祭り的Ver Upに初めて対応しました!

条件: iPhone 3GS、iPhone 4、iPhone 4S、iPhone 5、iPod touch(第3世代)、iPod touch (第4世代)、iPod touch (第5世代)、およびiPad に対応。 iOS 5.0 以降が必要 iPhone 5 用に最適化済み

「iPhone 5 用に最適化済み」って表示がちょっとうれしい。
でも最近忙しいから、残りのアプリが面倒くさい・・・


バージョン 2.1 の新機能

画面回転時のバグ修正


2012年10月5日

UIActivityView

iOS6ネタなわけですが、これまたたまらないビューができました。

UIActivityViewです。

ぱっと見、最初は、ActionSheetのアイコン版かなーぐらいに思ってたんですが、全然違いました。 もっと強力です。
連携機能をつけたい場合が強力です。 いろいろできるようです。
しかし、とりあえず僕のような横着者向けなところに、最も涙しましましたよ。


今まではTwitter機能を装備するので精一杯でした。(おいおい)
もうカメラロールへの保存機能程度も面倒くさくてやめてしまう始末・・・。

しかし!iOS6では、

NSArray* actItems = [NSArray arrayWithObjects:twText, url, image, nil];
UIActivityViewController *activityView = [[UIActivityViewController allocinitWithActivityItems:actItems applicationActivities:nil];
[self presentViewController:activityView animated:YES completion:nil];


たったこれだけ、たったこれだけで上のキャプのような機能の実装が、コンプリートです!

この例では、NSString(twText),NSURL(url),UIImage(image)をアイテムとして与えています。
すると勝手に文字列、画像、URLに対応した連携機能がチョイスされて表示してくれるわけです。

なんか一気に多機能化される感じでいいですね〜。
殆どなんにもしてないくせに、しばらくはあたかもiOSらしい機能をがんばって組み込んだかのように思わせることができそうですね!(ダメ?)

連係機能は重要ですからね、さすがアップル!
(本音:iOS5ん時からからつけとけや…)

上のアプリはほんとはTwitterしか出来なかったんですけど、iOS5のときはそのまんまTwitterだけにするには、

if (activityView) {
    [self presentViewController:activityView animated:YES completion:nil];
}
else {
    TWTweetComposeViewController *twViewController = [[TWTweetComposeViewController allocinit];
    [twViewController setInitialText:twText];
    [twViewController addImage:image];
    [twViewController addURL:url];
        
    [self presentModalViewController:twViewController animated:YES];
}


みたいな感じで大丈夫そうです。


もうマジでみんな早くiOS6にアップデートしてください!
(責任は持ちませんがw)
僕のためにw  いや、結局はみんなのためだと思う!(キリッ)


2012年9月30日

UICollectionViewController



いやあ、遅ればせながら使ってみましたよ、iOS6のUICollectionViewController。
便利ですね〜、なんで今まで無かったの???感バリバリです。
僕はいままではこういうのはTableViewを使ってやってたんですけど、Arrayのnオブジェクト/1セルにしたりしてて気持ち悪かった・・・

使い方は簡単


@interface CollectionViewController : UICollectionViewController;


って感じのクラスに


//セクション数
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
    return 1;
}

//セクション内の行数
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    //1セクションだけなので。myMpoってのはとある独自のデータオブジェクトです念のため
    return ([myMpo count]);   
}

//セルの描画
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    UICollectionViewCell *cell =
    [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];

    UIImageView *iv = (UIImageView*)[cell viewWithTag:66];  //66ってのはプロトタイプセルで定義してます。
    [iv setImage:[myMpo thumbAtIndex:indexPath.row]];
    
    return cell;
}

//タップされた時
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
    self.detailViewController.detailItem = indexPath;
}


て感じでおk。 言いたいことは、もうほんとにTableViewとおんなじ
もう簡単すぎ!
もう一度書こう。

なんで今まで無かったの???

もうiOS5以下なんてゴミですね、(゚⊿゚)イラネ
(といいつつ僕はまだiPhone4Sで使ってるんだけど)




2012年8月19日

ある拡張子のファイルを自分のアプリで開けるように

これもわかりやすい情報があんまり無いなあ。
いや標準的なUTIの記述例ならあるんだけど。

例として、.abcという拡張子のファイルを、Safari等から自分のアプリ(com.hoge.yourAppというIDのアプリで)で開けるようにする場合。
多分正解では無いと思うけど、試行錯誤の結果、こんな感じで動きましたよという例として書いときます。

プロジェクトのInfoタブの「Document Types」と「Exported UTIs」をいじります。



ってな感じで、

info.plistとしては


<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>abc</string>
<string>ABC</string>
</array>
<key>CFBundleTypeIconFiles</key>
<array>
<string>icon</string>
</array>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>plain/abc</string>
</array>
<key>CFBundleTypeName</key>
<string>hogehoge File</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>com.hoge.yourApp</string>
</array>
</dict>
</array>





<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array/>
<key>UTTypeDescription</key>
<string>hogehoge File</string>
<key>UTTypeIdentifier</key>
<string>com.hoge.yourApp</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>abc</string>
<string>ABC</string>
</array>
</dict>
</dict>
</array>



って感じ。
いらないのもあったりしそうだけど、あくまでも動いた例ってことでご了承を。
(MIME-Typeは要らないかも)


あとはAppDelegate.mを修正。 こっちは楽勝。

//オプション付きで起動されるとき

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    if (launchOptions) {
        NSURL *url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey];
        if ([url isFileURL]) {
            //とか、なんか処理;
        }
    }
    return YES;
}




//起動中に他のアプリから呼び出されるとき

- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url {
    if ([url isFileURL]) {
            //とか、なんか処理;
    }
    return YES;
}











2012年8月13日

UISplitViewController 1

覚書的な。
UISplitViewControllerって結構iPadでは必須コントローラだと思ってたので使ってみた。
しかし!ちょっと使いづらくないだろうか? みんなよく頑張ってるなと。
MGSplitViewController for iPadとかそういうの使うのかな?
まあ極力標準パーツで組みたい僕は標準のUISplitViewControllerで頑張ってみた。

とりあえず、右のDetailビューの中で、左右のPan(ドラッグ)を使いたかったんだ。
UIPanGestureRecognizer組み込んで、ポートレート表示で右にドラッグしたら、、、

マスタービューがひょこっと出てきやがる!

(ランドスケープ表示でも右ドラッグはUISplitViewControllerに奪われてる。)
どうにかならんもんかねこれ?
とりあえず、自前Panは2本指にすればいいかなって思って2Touchesに変更しても、まだひょこっと出てくる!

うーむ、どうやらUISplitViewControllerのUIPanGestureRecognizerのmaximumNumberOfTouchesが-1(無限)になってるらしい・・・
ってことで、こいつを無理やり1本指オンリーに変える。
DetailのコントローラのviewDidLoadあたりで、UIPanGestureRecognizerを探し出す。

for (UIGestureRecognizer *g in self.splitViewController.view.gestureRecognizers) {
    if ([g isKindOfClass:[UIPanGestureRecognizer class]]) {
        [(UIPanGestureRecognizer *)g setMaximumNumberOfTouches:1];
    }
}

これで自前の2本指ドラッグと共存できるようになりました。

2012年7月25日

AT-METRONOME Version 2.52

楽器練習に最適! AT-METRONOME 久々にバージョンアップしました。
前回のVerUpからなんと4ヶ月も経ってしまいました。
でも内容はなんてことありません。
In-App Purchaseにおいて、既に購入された方はリストアがわかりやすくなりました。
あとAdMobのライブラリを最新版にしています。


バージョン 2.52 の新機能

In-App purchaseにリストアボタン追加
AdMob lib アップデート