
「iPadでサークルチェックデータを持ち歩こう」というコンセプトのアプリ
「こみまぷ!」をMac OSXに対応させました。
こみまぷ!コンバーター Ver1.0.2を公開しましたので、こちらでどうぞ。
http://sygnas.jp/comimap/
Mac版のコミケカタROMも同じ形式のデータを保存するのかと思ったら微妙に(?)違うんですね。
・文字コードがUTF-8(Windowsは ShiftJIS)
・ブロックのアルファベットが半角(Windowsは全角)
・印刷設定がXMLで含まれている
などなど。
確かに仕様には沿っていますが、同じパッケージに収録されてるんだから
同じ形式にしてくれればいいのにと思ったりw

夏コミ新作「世界めいわく劇場 スペシャル+シンデレラ」よろしくお願いします。
iPhoneプログラミングメモ。
動的に作成したUILabelの文字サイズを自動的にリサイズする方法です。
文字が表示枠からはみ出す時などに適用されます。
InterfaceBuilderでは簡単に設定できますよね。
label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 25); label.font = [UIFont systemFontOfSize:20]; label.adjustsFontSizeToFitWidth = YES; label.minimumFontSize = 14; [self addSubview:label]; [label release];
fontプロパティで通常時の文字サイズを指定し、
adjustsFontSizeToFitWidthプロパティで自動リサイズを設定。
minimumFontSizeプロパティで最小フォントサイズを指定します。
iPhoneプログラミングメモ。
UIScrollViewで任意の位置にスクロールする方法。
zoomToRectメソッドで表示する範囲を指定するだけという簡単さ。
CGRect rect = CGRectMake( 100,200, 400, 400 ); [scrollView zoomToRect:rect animated:YES];
しかし現在表示している範囲と上記で指定したサイズが違う場合
スケールが変わってしまいます。
出来る事ならスケールは変えたくないという場合がありますよね。
そんな時は現在のスケールを再指定してあげます。
// 現在のスケール float scale = scrollView.zoomScale; // ズームスクロール CGRect rect = CGRectMake( 100,200, 400, 400 ); [scrollView zoomToRect:rect animated:YES]; // スケールを再指定 [scrollView setZoomScale:scale];
もっと面倒かと思ったらえらい簡単でびっくりしましたw
iPhone/iPadプログラミングメモ。
縦横どちらの画面でも中心に表示される UIViewを作っていたのですが、
[[UIDevice currentDevice] orientation]
を使っていたら実機で上手くいかなかったのでメモしておきます。
まず、上手くいかなかった理由としては UIDeviceの orientationプロパティには
回転方向だけでなく、画面が上向きか下向きかも存在していたからです。
それぞれ UIDeviceOrientationFaceUp、UIDeviceOrientationFaceDownです。
orientationプロパティでは「縦画面か横画面か」ではなく、本体の向き
であることを覚えておく必要があります。
対応策として、orientationプロパティを保存しておくことにしました。
UIViewでアニメーションを行った後に実行するメソッドを
外部から指定することって出来ないかなーと思ってこんなふうに書いてみました。
結果としてエラーになったんですが、メソッドを渡すことって出来ないのかなぁ。
できました! 単なるタイプミスだったようです。^^;
-(void)startDialogAnimation:(id)delegateTarget action:(SEL)action{
// アニメーション前準備
// 画面の外にいったん出す
CGRect frame = hogeView.frame;
frame.origin.y = -100;
[hogeView setFrame:frame];
// アニメーション設定
// 受け取ったオブジェクトとセレクターを設定してみた
CGContextRef context = UIGraphicsGetCurrentContext();
[UIView beginAnimations:nil context:context];
[UIView setAnimationDelegate:delegateTarget];
[UIView setAnimationDidStopSelector:action];
[UIView setAnimationDuration:0.5];
// アニメーションの完了値
CGRect lastFrame =hogeView.frame;
lastFrame.origin.y =300;
[hogeView setFrame:lastFrame];
[UIView commitAnimations]
}
呼び出すときはこんな感じ。
[dialogView startDialogAnimation:self action:@selector(hogeMethod)];
iPhone/iPadプログラミングメモ。
iPhoneアプリを作るとき icon.png という名前で 57×57(iPadは72×72)ピクセルの
画像をXcodeに読み込ませれば自動的にアプリケーションのアイコンに
設定されてくれます。
ご丁寧なことに光沢エフェクト(グラデーションエフェクト)までついてくれる
のですが、それを消す方法。
info.plist に「UIPrerenderedIcon」という項目を作り、True(チェックを入れる)に
設定すればいいそうな。
ちなみに Xcode 3.2.3でやったら
Icon already includes gloss effects
という名前に自動変換されました。
ちなみにアイコンについては「ヒューマン インターフェイス ガイドライン」に
掲載されているのですが、ファイル名については書かれてませんでした。
iPhone4になって解像度があがり、必然的にアイコンの画素数も変わりました。
NAGAOKA STATIONさんのまとめによると
下記のような感じらしいです。多っ!!
Icon.png : 57 x 57
Icon@2x.png : 114 x 114
Icon-72.png : 72 x 72
Icon-Small.png : 29 x 29
Icon-Small@2x.png : 58 x 58
Icon-Small-50.png : 50 x 50
Default.png : 320×480
Default@2x.png : 640 x 960
Default-Landscape.png : 768 x 1024
Default-Portrait.png : 768 x 1024
Default-LandscapeRight.png : 768 x 1024
Default-LandscapeLeft.png : 768 x 1024
Default-LandscapeDown.png : 768 x 1024
アイコン関係はこのへんも参考になりそう。
作ろうとしたらProgressionプロジェクトの新規作成のところで何故かAdobeAIRが選べない。
おかしいなーと思いつつAdobe Flash Support Centerから
Adobe Flash CS4 Professional Update (10.0.2) 05/13/2009
を落としてきてインストールしたら選べるようになりました。
あれ?前に作ったのってマシン環境新しくする前だったっけ?
iPhoneプログラミングメモ。
シミュレータだと問題ないのに実機で動作させると画像が表示されない。
調べてみるとファイル名の大文字小文字問題があるとか。
シミュレータ…大文字小文字区別ナシ
実機…区別アリ
でも今回ワタクシが遭遇したのはファイル名の間違いは一切なく、
仕様なのかバグなのかよくわからないものでした。
Xcode>キャッシュを空にする
ビルド>すべてのターゲットをクリーニング
もやってみたのですが治りませんでした。
で、自分の場合は下記の方法で治りました。
単純に画像を再登録するだけなのですが、リンク切れを意図的に発生させています。
なんなんでしょうねえ。
iPhoneプラグラミングメモ。
たとえばコミケのスペースの座標をまとめた配列を作るとき
「Aブロックの、1番目の、左上座標」みたいな表になるわけですが
NSDictionary *mapPosList = [NSDictionary dictionaryWithObjectsAndKeys: [NSArray arrayWithObjects: [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:100], @"left", [NSNumber numberWithInt:200], @"top", [NSNumber numberWithInt:50], @"width", [NSNumber numberWithInt:125], @"height", nil ], nil ], @"A", nil ]; NSLog(@"%d", [[[[mapPosList objectForKey:@"A"] objectAtIndex:0] objectForKey:@"left"] intValue]);
という感じの、一目みてもわけわからん定義と呼び出しになるわけです。
もっとスマートな記述方法ないですかねえ…。
ActionScriptや JavaScriptに慣れていると
var mapPosList:Objects = {
"A":[
{left:100, top:200, width:50, height:125}
]
};
trace( mapPosList['A'][0].left );
くらいシンプルなのが当たり前だからなぁ…。
XMLで座標一覧作って、XPath使うのが一番スマートかもしれない。
全データ舐めるってわけじゃないし。
動的に複数のボタンを作っていたら、ボタンを押したとたん落ちてしまう。
そんな状態にハマりました。^^;
CGRect rect = CGRectMake(mapX, mapY, MAP_DESK_YOKO_W, MAP_DESK_YOKO_H); UIButton *button = [[UIButton alloc]initWithFrame: rect]; [button addTarget:self action:@selector(mapButtonTouch) forControlEvents:UIControlEventTouchUpInside]; [button setBackgroundColor:[UIColor redColor]]; button.tag = count;
comikechk[4537:207] *** -[ComikeMapViewController mapButtonTouch]: unrecognized selector sent to instance 0×48609a0
なんだろーなんだろーと検索しても有効な情報が得られない。
ふと、作例を載せているサイトを見ていたら…あっ!!
[button addTarget:self action:@selector(mapButtonTouch:) forControlEvents:UIControlEventTouchUpInside];
@selectorでメソッドを指定する時に最期の「:」を付け忘れただけでした。
うわー、まぬけすぎるw