点击后,我想让一些UIImageView对象出现在底层的UIView上。 所以我创建了以下操作:
- (IBAction)startStars: (id) sender
{
UIView* that = (UIView*) sender; // an UIButton, invisible, but reacting to Touch Down events
int tag = that.tag;
UIView* page = [self getViewByTag:mPages index:tag]; // getting a page currently being viewed
if ( page != nil )
{
int i;
UIImage* image = [UIImage imageNamed:@"some.png"];
for ( i = 0 ; i < 10 ; ++i )
{
// create a new UIImageView at the position of the tapped UIView
UIImageView* zap = [[UIImageView alloc] initWithFrame:that.frame];
// assigning the UIImage
zap.image = image;
// make a modification to the position so we can see all instances
CGPoint start = that.layer.frame.origin;
start.x += i*20;
zap.layer.position = start;
[page addSubview:zap]; // add to the UIView
[zap setNeedsDisplay]; // please please redraw
[zap release]; // release, since page will retain zap
}
[image release];
}
}
不幸的是,什么都没有出现。调用代码,创建对象,加载图像,甚至属性都是预期的。 页面本身是一个真正的基本UIView,使用界面构建器创建,以包含其他视图和控件。
但是,这一切都看不出来......
有谁知道我做错了什么?我是否需要设置alpha属性(或其他)?
由于
Zuppa
答案 0 :(得分:1)
我会检查几件事:
使用指定的初始值设定项UIImageView
:
[[UIImageView alloc] initWithImage:image];
这将确保您的新视图具有正确的图片大小 - zap
和您的图片的相对大小是多少?它可能不在框架内。
确保图像确实存在且已创建
尝试不调整图层属性,而是设置图像视图的center
。事实上,在第一个实例中根本不调整它,只是看看你能看到什么。我不确定,但我认为position
可能会在视图中移动图层,因此可能会将图像移出视线。尝试:
CGPoint newCenter = that.frame.origin;
newCenter.y += zap.bounds.size.height/2;
newCenter.x += i*20;
zap.center = origin;
setNeedsDisplay
不是必需的。显然,你的评论是一种绝望行为!
答案 1 :(得分:0)
你的UIImage是否为零?
您不需要{.1}}的.png扩展名才能生效。如果你把它放入,它甚至可能无法正常工作,我不确定。你也过度发布你的形象了。 imageNamed:
会返回一个自动释放的图片,因此没有理由在图片上调用版本,除非您还在某处调用了retain。
答案 2 :(得分:0)
我发现了一个潜在错误:在第二次调用时,您将重新添加另一个副本,因此在添加新副本之前请注意删除子视图。 Yu可以选择移动上一个视图。
99%的关于图像不可见视图的案例都是错误的名称,因此建议使用temp var加载:
UIImage img = [UIImage imageNamed ..];
并测试img。