Xcode удалить сенсорные изображения событий? - PullRequest
0 голосов
/ 19 августа 2011

Я использую этот код для отображения случайных изображений на экране.

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    UITouch *touch = [[event allTouches] anyObject];
    CGPoint location = [touch locationInView:touch.view];

    UIImageView *cloud = [[UIImageView alloc] 
                               initWithImage:[UIImage imageNamed:@"spit.png"]];

    cloud.center = CGPointMake(random() % 250, random() % 400); //Random place
    [cloud setAlpha:1];
    [self.view addSubview:cloud];
    [cloud release];

    cloud.frame = CGRectMake(0, 0, 300, 300); 

    [UIView beginAnimations: @"cloddy" context: nil];
    [UIView setAnimationDuration: 0.5f];
    [UIView setAnimationCurve: UIViewAnimationCurveEaseIn];

    // Size when done
    cloud.frame = CGRectMake(0, 0, 75, 75); 
    cloud.center = location;
    [UIView commitAnimations]; 
}

после нескольких касаний экран становится почти заполненным. Как мне удалить их внутри другого IBAction? И почему анимация всегда начинается в верхнем левом углу, хотя я использую случайное?

1 Ответ

1 голос
/ 20 августа 2011

Предполагая, что единственными подпредставлениями, которые были добавлены к вашему представлению, являются clouds,

- (IBAction)clearClouds:(id)sender{
    [[[self view] subviews] makeObjectsPerformSelector: @selector(removeFromSuperview)];
}

Облако всегда начинается в верхнем левом углу, поскольку эта строка: cloud.frame = CGRectMake(0, 0, 300, 300); сбрасывает свое происхождение до 0, 0.Переместите cloud.center = CGPointMake(random() % 250, random() % 400); ниже линии, где вы устанавливаете рамку облака, и все должно быть готово.

...