• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[再]objective-c 描画処理について)

[再]Objective-C 描画処理について

このQ&Aのポイント
  • iPhoneアプリを作成している初心者が、画像を並べてスクロールできるように描画処理を行いたいがうまくいかず、コードの一部でエラーが発生してしまう。
  • initWithImageメソッドに配列を渡した際に、パラメータの型が不適切とエラーが表示され、実行時にプログラムが落ちてしまう。
  • 解決策を教えていただける方を探しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.2

こんばんは。なんか、つっこみどころ満載ですね。 たとえば、横1列に画像を並べると仮定して。 (1) まず、画像のパスはNSBundleで取って来たらどうですか? 画像が3枚としたら、こんな感じで。 NSArray* photoFiles = [NSArray arrayWithObjects:@"1", @"2", @"3", nil]; for (NSString* photoName in photoFiles) { NSString* path = [[NSBundle mainBundle] pathForResource:photoName ofType:@"jpg"]; (2) scrollView.contentSize = imageView.bounds.size; これはおかしいでしょう。画像1枚分の広さしかない。 画像横3枚分の広さは、こんな感じでどうですか? CGRect photoPanel = CGRectMake(0, 0, photoW*3, photoH); scrollView.contentSize = photoPanel.size; (3) UIImageViewに画像パスを指定するには、こんな感じで aImageView.image = [UIImage imageWithContentsOfFile:path]; (4) 画像毎のUIImageViewの位置は、for文の中で横にずらせば いいでしょう CGRect imageBounds = CGRectMake(photoW*i, 0, photoW, photoH); UIImageView* aImageView = [[UIImageView alloc] initWithFrame:imageBounds]; (5) そして、スクロールビューに追加する [scrollView addSubview:aImageView]; [aImageView release]; 以上、参考にしてください。

eTakasy
質問者

お礼

何かと勉強不足で大変申し訳ありません。 xjdさんの回答を参考にさせて頂き、なんとか解決できました。 本当にありがとうございました。

その他の回答 (1)

  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.1

私は、あなたの前の質問に対して、「問題があるとすると、ここに書かれていない箇所でしょう。MyImageViewの初期化メソッド「initWithImage:」が、どう定義されているかが、気になります。引数の型が、ちゃんと(NSArray *)になっていますか?」という質問で返しました。 この私の質問に答えてもらえませんか?私は、べつにここに雑談をしにきているわけではない。答えてもらっても、もらわなくても、どうでもいい質問をしているわけではなく、問題解決のために、どうしても必要な情報を導き出すという目的を持って、質問をしているのです。 私の質問を、箇条書きで整理しておきましょうか? (1) クラスMyImageViewの実装部を書いてください。 (2) とくに、初期化メソッド「initWithImage:」の定義を書いてください。 (3) さらに、「initWithImage:」の引数の型が知りたい。 おそらく「クラスMyImageViewに、初期化メソッドinitWithImage:は実装していない」という答えが返ってきそうな気はしています。 それは今回のあなたの質問で、新しく出された情報から推理ができるからです。 エラー表示「Incompatible pointer sending 'NSMutableArray *' to parameter of type 'UIImage *'」。 「(UIImage *)を型とする引数に対して、型が一致しないポインタである(NSMutableArray *)を送っている」のですから、Super Class(親クラス)の初期化メソッドは、こう定義されているはずです。 - (id) initWithImage: (UIImage *)image; そこへNSMutableArrayインスタンスを送ったら、そらエラーになりますよ。カツ丼の出前を頼んで、ピザを持ってこられたら、だれだって怒ります。 どうしてもUIImageの配列NS(Mutable)Arrayを渡して初期化したければ、MyImageViewに、そういう初期化メソッドを定義し、実装してください。ただし、Super Classのメソッド名とぶつからないよう、メソッド名は変えたほうがいいでしょうね。 - (id) initWithImageArray: (NSArray *)imageArray; こんな感じでしょうか。

eTakasy
質問者

お礼

何かと勉強不足で大変申し訳ありません。 ここで質問させて頂くこと事態、初めてだったもので、 回答者の方へ返答の仕方も分からなかったもので。。 時間はかかりましたが、この問題については解決できました。 本当にありがとうございました。

関連するQ&A