0

次のコードが AppDelegate.h/.m で動作していましたが、それをトリガーするボタンで ViewController で動作するように変更することはできません。

@implementation BSViewController

@synthesize imageView;
@synthesize workingImage;
- (IBAction) chooseImage:(id) sender {

    UIImage* testCard = [UIImage imageNamed:@"ipad 7D.JPG"];
    CGImageRef num = CGImageCreateWithImageInRect([testCard CGImage],CGRectMake(532, 0, 104, 104));
    UIGraphicsBeginImageContext(CGSizeMake( 250,650));
    CGContextRef con = UIGraphicsGetCurrentContext();
    UIImage* im = UIGraphicsGetImageFromCurrentImageContext();
    CGContextDrawImage(con, CGRectMake(0, 0, 13, 13) ,num);
    UIGraphicsEndImageContext();
    CGImageRelease(num);

    UIImageView* iv = [[UIImageView alloc] initWithImage:im];
    [self.imageView addSubview: iv];
    iv.center = self.imageView.center;
    [iv release];

シミュレーターに「Choose image」という名前のボタンが表示されますが、そこに画像が表示されません。

4

2 に答える 2

0

私はそれを機能させることができましたが、前にいくつかダミーの質問をさせてください. これらをスキップして、答えの最後に直接ジャンプできます。

  • 以前は機能していましたか?
  • なぜ ARC を使用しないのですか?
  • chooseImage:Interface Builder を使用して、またはプログラムでボタンにリンクしましたか? 私は時々この基本的なステップを忘れてしまい、もちろん何もうまくいきません:)
  • の画像プロパティを変更するだけivでなく、サブビューとして追加するのはなぜですか。これを知っていると、適切に答えるのに役立ちます。self.imageViewself.imageView
  • ivサブビューとして追加する正当な理由があると仮定するとiv.center = self.imageView.center、中心が 2 つの異なる座標系にあることに注意してください。
    Appleドキュメントを作成します。

    中心はそのスーパービューの座標系内で指定され、ポイント単位で測定されます。このプロパティを設定すると、それに応じてフレーム プロパティの値が変更されます。

編集:その他の確認事項

  • self.imageView存在しますか?つまり、IB で追加して IBOutlet にリンクしたり、プログラムで定義したりしましたか?
  • ブレーク ポイントを追加し、chooseImage:そこに生成するオブジェクトが存在しないことを確認しながら、段階的に実行します。nil
  • テスト:self.imageView setImage:imの代わりに試してみself.imageView addSubview:ivてください。やりたいことでなくても、他のすべてが問題なければ、画像が表示されるはずです。


UIImage* im = UIGraphicsGetImageFromCurrentImageContext();
と の順序を入れ替えるとうまくいきます
CGContextDrawImage(con, CGRectMake(0, 0, 13, 13) ,num);

そうしないとim、何も描画せずにコンテキストのコンテンツで作成するように求められます。

コードは次のようになります。

UIImage* testCard = [UIImage imageNamed:@"ipad 7D.JPG"];
CGImageRef num = CGImageCreateWithImageInRect([testCard CGImage],CGRectMake(532, 0, 104, 104));
UIGraphicsBeginImageContext(CGSizeMake( 250,650));
CGContextRef con = UIGraphicsGetCurrentContext();
CGContextDrawImage(con, CGRectMake(0, 0, 13, 13) ,num);
UIImage* im = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRelease(num);

それが役に立てば幸い。:D

于 2013-01-13T16:52:40.223 に答える
0

self.imageViewどのビューにも追加していません。あなたが必要

[self.view addSubview:self.imageView];

imageView を表示します。

于 2013-01-13T16:27:27.590 に答える