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;
}

在我的 中ViewController.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

除了保留参考之外,您似乎没有对图像做任何事情。你有两个选择:

1) 更新你的Missile类以添加一个UIImageView到自身并在那里显示图像。

或者

2)drawRect:在您的类中实现该方法Missile并在那里绘制图像。

选项 1 可能更容易。

于 2013-07-20T21:18:08.380 回答