Hi-farm blog

ActionScript 3.0 , AIR , FLEXからCocoa, OpenGL

Archive for the ‘iPad’ Category

連投すみません。

UINavigationControllerを使って階層化されたViewを使うときにはUITableViewと組み合わせる事もあると思うのですが、一つ前の画面に戻るときにデータを再読み込みさせたい時の方法が分からなかったのでメモ。

NSArray* naviary = [self.navigationController viewControllers];
    NSInteger current = [naviary count]-1;
    UITableViewController* prev = (UITableViewController*)[naviary objectAtIndex:current-1];
    [prev.tableView reloadData];

navigationControllerがviewControllersという配列で今までのUIViewControllerの参照を保持しているので、一つ前の階層なら最後から一つ前の要素の参照を取得し、reloadDataをすることで現在の画面で変更したデータを反映させた結果を表示する事も可能です。

今日はメモです。

iOSアプリ開発で、独自に作成したUITableViewCellをタップした時にデフォルトのUITableViewCellと同じように文字色を変えたかったのですが、見つかるまでに少し時間がかかったのでメモしておきます。

独自で作成したUITableViewCellのサブクラス内に

-(void)setHightlighted:(BOOL)highlighted animated:(BOOL)animated

というメソッドがあるので、それをオーバーライドしてhighlightの値を元に表示を切り替えると画面に触れたときに、文字色を変える事ができます。

-(void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
{
    if(highlighted){
        [self setWhite];
    }else
    {
        [self setBlack];
    }
    [super setHighlighted:highlighted animated:animated];
}

※setWhite, setBlackは文字色を変更するための独自メソッドです。

さて、僕が開発しているiPadのMIDIコントローラーアプリケーションであるiMIDIConの新しいバージョン2.0がリリースされましたのでお知らせいたします。

このバージョンからはユーザーが独自の画面レイアウトをできるようになりました。

よって自分にとって最適な画面構成を作る事ができます。

これは実際の物理的なMIDIコントローラーではなかなか難しいと思うのでiPadならではの機能です。

iPadアプリの画面レイアウト用アプリはAdobe AIR製、なんてちょっとややこしい事をやっています。

この機会にぜひ一度お試し下さい。

buy iMIDICon from app store

  • 0 Comments
  • Filed under: iPad
  • 明けましておめでとうございます。
    iOS、Mac、Flash関連の情報を中心に今年は今までよりちゃんと記事を書けるように頑張ろうと思います。(毎年言ってる気がしますが。。。)

    さて、本日は新年セールとして、1/5までは¥115円にてiMIDIConを販売します。
    iPadでのMIDIコントローラーで、特にVJ向けに作っていますが試してみようという方はこの間にぜひご購入下さい。

    buy iMIDICon from app store

    ※iTunes上で価格が反映されるまで時間がかかる場合がありますので価格が反映されている事を確認して下さい。

  • 0 Comments
  • Filed under: iPad
  • [iOS] OSStatusの結果について

    オーディオとかMIDIとかの場合は良くOSStatus err
    とかして処理が成功しているかを確認すると思うのですが、エラーを出したときにいつも検索して調べてたので自分のために残しておきます。
    せっかくなので、日本語にしておきました。ちょっと翻訳が怪しいところもあるので突っ込みがあれば頂けると助かります。

    errSecSuccess = 0
    成功(エラーなし)
    errSecUnimplemented = -4
    関数か操作が実装されていない
    errSecParam = -50
    関数に送っている一つ以上のパラメーターが不正。
    errSecAllocate = -108
    メモリの確保に失敗
    errSecNotAvailable = -25291
    利用可能なキーチェーンが存在しない。コンピューターの再起動をすすめます。(翻訳が怪しいかも?)
    errSecDuplicateItem = -25299
    特定のアイテムが既にキーチェーンに存在する
    errSecItemNotFound = -25300
    特定のアイテムがキーチェーンの中に見つけられなかった
    errSecInteractionNotAllowed = -25308
    ユーザーインタラクションが許されていない
    errSecDecode = -26275
    与えられたデータをデコードできない

    完全にこちらのサイトを見させていただいて書きました。ありがとうございます。
    http://d.hatena.ne.jp/feb-hare/20100729/1280359887

    いままでずっとiPhoneアプリ作ってる作ってると言うばっかりで作れてなかったですが、やっとリリースできました。
    しかもiPadアプリです。

    最近VJしているときに自分で使っていて、自分自身がユーザーであり続けるので今後も愛情たっぷりで育てて行こうと思います。

    何かご指摘等あればコメントいただけるとうれしいです。

    後々色々かけるといいなあ。

    buy iMIDICon from app store

    [iOS] UIViewの背景画像を設定する

    iPadアプリを現在作っているのですが、背景画像の設定方法がわからなくて、Interface Builder上のいちばん下にUIImageViewを貼付けていたりしたのですが、他のパーツを動かすときにいちいち選択状態になって邪魔だったり、そもそも余分なインスタンスを持ってしまうのでバグが発生しやすくなるかも?という事でなるべく避けたかったので調べていたら、UIColorに画像を指定する方法を見つけました。
    ほぼ100%こちらのブログを参考にさせていただいています。。すみません。

    http://r-force.seesaa.net/article/164146136.html

    使用方法はこんな感じです。background.pngってのは背景画像として使う画像ですよ。

    UIImage *backgroundImage = [UIImage imageNamed:@"background.png"];
    self.view.backgroundColor = [UIColor colorWithPatternImage:backgroundImage];
    [backgroundImage release];

    要するに、UIImageをUIColorのcolorWithPatternImage: を使う事で設定できる、という事ですね。
    ActionScriptで言うところのbeginBitmapFill();みたいなものであり、
    WPF/Silverlightで言う所のImageBrushって所でしょうかね。

    これで簡単に背景画像を設定できるようになったので、リンク先にもあるようにどこまで応用できるかで外観のカスタマイズがどこまでできるか、というのが解りそうですね。

  • 0 Comments
  • Filed under: iPad, iPhone
  • [iPad] 外部出力方法

    やっぱり久々なポストです。

    iPadでは外部映像出力が可能なので、それを試しているのですが、ちょっと解らずハマっていた事があったのでメモ程度に書いておきますね。デバッグするのも困難ですし。

    基本的な実装の手順としては、下記の通りです。
    1. つながっているスクリーンを[UIScreen screens]がNSArrayで取得する。
    2. 1.で取得したUIScreenからお好みのUIScreenModeを取得する。
    3. UIScreenを取得する。
    4. 取得したUIScreenのcurrentModeに2.で取得した内容を設定する。
    5. 表示させたいコンテンツを作成する。
    6. 外部出力させるためにUIWindowを作る。
    7. 6.に表示させたいコンテンツをaddSubView: する。
    8. window.screen に3.のUIScreenを設定する。
    9. windowの基礎的な設定を行う。

    以上です。

    ——————————————

    // ログとして外部モニターに表示する内容
    // log message displayed in external monitor.
    NSMutableString *str = [[NSMutableString alloc] init];
    int screenCount = [[UIScreen screens] count];
    
    // 設定されるスクリーンモード
    // used screen mode
    UIScreenMode *current = nil;
    
    // checking each screen information
    for(int i = 0; i < screenCount; i++)
    {
     int modelen = [[[[UIScreen screens] objectAtIndex:i] availableModes] count];
    
     // checking each screen mode in screen.
     for (int j = 0; j < modelen; j++)
     {
       // getting screen mode
       UIScreenMode *curMode = [[[[UIScreen screens] objectAtIndex:i] availableModes]
     objectAtIndex:j];
    
       // get information of screen.
       NSString *sstr = [NSString stringWithFormat:@"screen:%i, mode:%i, w:%f, h:%f,
      ratio:%f ---", i, j, current.size.width, current.size.height,
    current.pixelAspectRatio];
    
       [str appendString:sstr];
    
       // if curMode.size.width is larger than current, change current reference
       if(curMode.size.width > current.size.width){
        current = curMode;
        }
       }
      }
    
      // screen object
      UIScreen *another = [[UIScreen screens] objectAtIndex:1];
      another.currentMode = current;
      CGSize size = current.size;
      uvc = [[UIViewController alloc] init];
    
      // create new window.
      UIWindow *window = [[UIWindow alloc] initWithFrame:CGRectMake(
     0.0f,
     0.0f,
     size.width,
     size.height
    )];
    
    UITextView *tv = [[UITextView alloc] initWithFrame:CGRectMake(
    0.0f, 0.0f, 800.0f, 800.0f)
    ];
    [uvc.view addSubview:tv];
    tv.text = str;
    
    [tv release];
    
    [window addSubview:uvc.view];
    window.screen = another;
    
    [window makeKeyAndVisible];
    [window setHidden:NO];
    

    —————————————————
    ※syntaxhighlighterをうまくつかえていないので改行をくわえています。

    ちなみにgithubにのせてますのでご興味のある方はご覧下さい。
    http://github.com/mmlemon/iPad-external-display-sample

    何か間違いやご不明な点があればお気軽にご質問下さいね!