0

Missiles.mファイルに次のカスタム初期化子を記述しました(Missile.hから継承UIView):

-(id)initWithMissileImage: (UIImage *)image
{
    CGRect missileFrame = CGRectMake(0, 0, 20, 20);
    self = [super initWithFrame:missileFrame];

    if (self) {
        _missileImage = image; //these are declared as strong properties
        _deltaX = 0;
        _deltaY = -1;
    }
    return self;
}

myViewController.mでは、イニシャライザを次のように呼び出します。

-(void)fireMissileWithDeltaX: (float)x andY: (float)y
{
    Missiles *missile = [[Missiles alloc] initWithMissileImage:[UIImage imageNamed:@"missile.png"]];
    //other code here...
    [self.view addSubview:missile];
}

ただし、ミサイルの .png 画像は表示されません。別の方法として、コードが機能するかどうかをテストするためだけに、描画された正方形のボックスを使用してみましたが、正常に機能します。

私は何を間違っていますか?助けてくれてありがとう!

4

2 に答える 2

1

投稿したコードでは、画像をまったく描画していません。プロパティを設定した後、これをカスタム初期化子に入れます。

UIImageView *missileView = [[UIImageView alloc] initWithImage:_missileImage];
[self addSubview:missileView];

_missileImageまたは、それを表示しようとして別の場所で使用する場合は、そのコードを投稿してください。

于 2013-07-20T21:17:56.817 に答える
1

参照を保持する以外に、画像で何もしていないようです。次の 2 つのオプションがあります。

1) クラスを更新して、それ自体Missileに a を追加し、そこに画像を表示します。UIImageView

また

drawRect:2) クラスにメソッドを実装し、Missileそこに画像を描画します。

オプション 1 の方がおそらく簡単です。

于 2013-07-20T21:18:08.380 に答える