每当我想在我的View Controller窗口的某个特定x-y坐标上绘制图像(在本例中为“goodCell.png”)时,我会调用以下方法,包括相应的参数:
-(void)paintGoodCellatX:(int)xAxis andY:(int)yAxis onViewController:(UIViewController*)playingViewController
{
int x = 32*(xAxis - 1);
int y = 384 - (32* yAxis);
UIImage* myImage = [UIImage imageNamed:@"goodCell.png"];
UIImageView* myImageView = [[UIImageView alloc] initWithImage:myImage];
myImageView.frame = CGRectMake(x,y, 32, 32);
[playingViewController.view addSubview:myImageView];
}
如果在我的代码中的某个稍后时间点我想要删除上面的一个图像,则会在某个特定的x& y坐标,我该怎么做?
鉴于此代码,我无法抓住我绘制的ImageView(因此我不能使用[myImageView removeFromSuperView];
之类的东西,因为名称myImageView
没有定义任何东西),除了它的坐标。那么有没有办法在View Controller窗口的特定x-y坐标上删除/删除UIImageView或其他一些方法来解决这个问题?
谢谢
答案 0 :(得分:2)
在您的视图中添加TAG,为您提供有意义的标识符。使用myImageView.tag = XXX;
然后使用[playingViewController viewWithTag:XXX]获取要删除的视图的UIImageView句柄。
标签是一个整数,它可以是存储这些X / Y位置的NSArray的偏移量,还是存储这些值的NSDictionary中的一个键?
答案 1 :(得分:1)
你可以给每个视图一个由点计算的标签,例如3个数字x比3个数字y轴作为标签
对于x = 312 y = 567,它将是
myImageView.tag = 312567;
这样你就可以随时识别视图
另一种更好的可能性是将所有添加的内容存储在NSArray中。 如果要删除一个特定视图,则必须遍历数组并检查该点是否在视图的边界内 所以或多或少:
用于创作;
NSMutableArray *imageViewArray = [[NSMutableArray alloc] init];
-(void)paintGoodCellatX:(int)xAxis andY:(int)yAxis onViewController:(UIViewController*)playingViewController
{
int x = 32*(xAxis - 1);
int y = 384 - (32* yAxis);
UIImage* myImage = [UIImage imageNamed:@"goodCell.png"];
UIImageView* myImageView = [[UIImageView alloc] initWithImage:myImage];
myImageView.frame = CGRectMake(x,y, 32, 32);
[playingViewController.view addSubview:myImageView];
[imageViewArray add:myImageView];
}
删除:
for(UIImageView *mv in imageViewArray) {
if(CGRectContainsPoint(mv.bounds, yourCGPoint))
[mv removeFromSuperview];
}