Ios4 iPhone上动态创建的UIImageView未显示
我已经达到了headdesk的目的,尝试在iOS 4.2中动态创建UIImageView 这是给我带来麻烦的代码: 1.设置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
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!写得好的问题值得称赞。如果系统允许,请返回并选择正确答案。