создать uiimageView вблизи и за пределами экрана - PullRequest
0 голосов
/ 04 мая 2011

Привет всем, я француженка, так что позовите меня за мой английский. хорошо, что я хочу сделать, это создавать каждую секунду новое изображение в случайной позиции, но в произвольной позиции вне экрана и (очень важно) вблизи сторон экрана (верхняя сторона или левая сторона или правая или нижняя). вот так, когда я захочу их оживить, там будут создаваться за пределами экрана, но только по бокам. Как я могу это сделать, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 04 мая 2011

Итак, по сути, мое понимание вашего вопроса состоит в том, что у вас одна цель: вы хотите оживить объект с помощью перевода.Таким образом, анимация переходит от видимого экрана к видимому.

Вот подход: 1. Вам необходимо определить, каковы пределы вашего "внешнего" экрана.Я думаю, что в зависимости от размера вашего фрейма UIImageView заполнение в 100 пикселей - это нормально.Так что это будет х: (-100, 420), у: (-100, 580).

  1. Генерация случайного числа.В этом случае arc4random () лучше, чем rand ().

  2. Создайте метод, который будет вызываться NSTimer, в котором создаются UIImageView.

  3. Не забудьте правильно управлять вашими UIImageView.Частое создание объектов без освобождения приведет к сбою приложения.Если возможно, используйте их вместо того, чтобы создавать их при каждом вызове метода.

0 голосов
/ 04 мая 2011

Этот код использует random:min:max для генерации случайного значения x и y между желаемым минимальным и максимальным диапазоном. В функции onTimer мы выделяем новый объект UIImageView, а затем устанавливаем его свойство center в случайное положение вне экрана. Если сгенерированное случайное число внутри оператора if меньше 5, то представление будет добавлено либо слева, либо вверху экрана, в противном случае оно будет добавлено справа или снизу.

/*****************************************************************************
 Generates a pseudo random CGPoint point value within the min and max range.  
 *****************************************************************************/
-(CGFloat)rand:(CGFloat)min:(CGFloat)max{
    float difference = max - min;
    return (((CGFloat) rand()/(CGFloat)RAND_MAX) * difference) + min;
}

-(void)viewDidLoad{ 
    //setup a timer property in your view controller header file
        timer = [NSTimer timerWithTimeInterval:1.0
                                    target:self 
                                  selector:@selector(onTimer) 
                                  userInfo:nil 
                                   repeats:YES];
    [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
}

-(void)onTimer{
     UIImagView *myRandomImageView;
     myRandomImageView = [[UIImageView alloc] initWithImage:@"MyRandomImage.png"];
     if([rand:1:10] > 5)
            //put the image view to top or left side of the screen
            myRandomImageView.center = CGPointMake([rand:-100,-200], [rand:-100,-200]); 
     else 
            //put the image view to the bottom or right side of the screen
            myRandomImageView.center = CGPointMake([rand:420,520], [rand:580,680]); 
     //dont forget that the values I have eneter here to be passed to the rand:min:max 
     //function are meant to serve as a guide and that you should enter your own values to 
     //achieve the desired random view positioning off screen. 
     [self.view addSubview:myRandomImageView]; 
     [myRandomImageView release]
}
...