Ios4 iPhone上动态创建的UIImageView未显示

Ios4 iPhone上动态创建的UIImageView未显示,ios4,uiimageview,Ios4,Uiimageview,我已经达到了headdesk的目的,尝试在iOS 4.2中动态创建UIImageView 这是给我带来麻烦的代码: 1.设置 UIImageView *iview = [[UIImageView alloc] initWithFrame:CGRectMake(20, 20, 95, 149)]; iview.tag = 200; // see note 1 iview.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIView

我已经达到了headdesk的目的,尝试在iOS 4.2中动态创建UIImageView

这是给我带来麻烦的代码:

1.设置

UIImageView *iview = [[UIImageView alloc] initWithFrame:CGRectMake(20, 20, 95, 149)];
iview.tag = 200; // see note 1
iview.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
[self.view addSubview:iview];
[iview release];
我试过释放和不释放iview

2.回报

NSString *img = ...[see note 2];
NSLog(@"Filename: %@", img);

UIImageView *pIV = (UIImageView *)[self.view viewWithTag:200];
if (pIV == nil) {
    abort();
}

UIImage *pI = [UIImage imageWithContentsOfFile:img];
if (pI == nil) {
    abort();
}
[pIV setImage:pI];
这是扩展显示我在看什么,因为简洁的版本不适合我

注1:以上大多数硬编码值200、帧边界等在iview alloc代码所在的forloop中定义或计算。为简洁起见,请留下,但如果您认为相关的话,请告诉我

注2:这只是一条在查看NSBundle等后返回文件路径的消息。NSLog输出为

2011-01-30 22:09:54.767 ribbit[13529:207]文件名:/Users/rip/Library/Application Support/iPhone Simulator/4.2/Applications/C421AA9F-45BB-41AB-8CB0-1540FABB56D3/ribbit.app/cardfront_a7.png

png确实存在,而且两个sentinel都不是nil,因此也不会发生中止

我相信这只是一些基本的东西

我尝试过的事情:

1使用IB生成UIImageView。当它连接正确时,我可以看到帧,并且显示了IB中默认的图像。然而,我仍然无法改变图像,这就是为什么我开始动态创建它们的原因……我认为这样会更简单。嗯

2尝试为各种iviews使用实例变量,但这很难实现,其中有10个UIImageView正在生成,它们也不起作用

因为三次尝试都失败了,同样的行为运行正常,只是看不到图像,我假设这只是一些愚蠢的小事


我欢迎你提出任何建议

问题似乎与setImage有关,没有一个,不透明=是

我预先创建了UIImageView,然后根据需要用一个图像惰性地加载它们,这就是上面代码示例中没有setImage的原因。现在我知道了,它似乎在起作用:

for (int i = 0; i < CARDS_AND_ARROWS; i++) {
    float x = (float)(67 + ((95 + 22) * i));
    UIImageView *iview = [[UIImageView alloc] 
        initWithFrame:CGRectMake(x, 20.0f, 95.0f, 149.0f)];
    [iview setImage:[UIImage imageNamed:@"cardback_a.png"]];
    iview.opaque = YES;
    iview.tag = UPPER_IMG_TAG_0+i;
    iview.autoresizingMask = arm;
    iview.hidden = NO; /* change to YES for distribution */
    [self addSubview:iview];
    [iview release];
}
一旦我加上这些,卡片就出现了。问题可能不是/不是/正在加载或显示,而是可见性问题


无论如何,fuggedaboutit。

问题似乎在于setImage没有一个,不透明=是

我预先创建了UIImageView,然后根据需要用一个图像惰性地加载它们,这就是上面代码示例中没有setImage的原因。现在我知道了,它似乎在起作用:

for (int i = 0; i < CARDS_AND_ARROWS; i++) {
    float x = (float)(67 + ((95 + 22) * i));
    UIImageView *iview = [[UIImageView alloc] 
        initWithFrame:CGRectMake(x, 20.0f, 95.0f, 149.0f)];
    [iview setImage:[UIImage imageNamed:@"cardback_a.png"]];
    iview.opaque = YES;
    iview.tag = UPPER_IMG_TAG_0+i;
    iview.autoresizingMask = arm;
    iview.hidden = NO; /* change to YES for distribution */
    [self addSubview:iview];
    [iview release];
}
一旦我加上这些,卡片就出现了。问题可能不是/不是/正在加载或显示,而是可见性问题


无论如何,fuggedaboutit。

欢迎来到StackOverflow!写得好的问题值得称赞。当系统允许时,请返回并选择正确答案。欢迎使用StackOverflow!写得好的问题值得称赞。如果系统允许,请返回并选择正确答案。