在屏幕两侧和附近创建uiimageView

时间:2011-05-04 15:41:30

标签: iphone animation random uiimageview

大家好,我是法国人,所以请原谅我的英语。我想要做的就是在随机位置创建新图像,但是在屏幕外面随机定位,并且(非常重要)靠近屏幕两侧(上侧或左侧或右侧或下侧)。就像我想要为它们制作动画一样,屏幕外面会创建,但只是在两侧。我该怎么办呢?

2 个答案:

答案 0 :(得分:0)

此代码的作用是使用random:min:max在所需的最小和最大范围之间生成随机x和y值。在onTimer函数中,我们分配一个新的UIImageView对象,然后将其中心属性设置为屏幕外的随机位置。如果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]
}

答案 1 :(得分:0)

所以基本上,我对你的问题的理解是你有一个目标:你想通过翻译来动画一个对象。 因此,动画从可见屏幕外部移动到可视屏幕。

这是一种方法: 1.您需要确定“外部”屏幕的限制。根据你的UIImageView框架的大小,我认为100 px填充是好的。那就是x:( - 100,420),y:( - 100,580)。

  1. 生成随机数。在这种情况下,arc4random()优于rand()。

  2. 创建一个将由NSTimer调用的方法,其中创建了UIImageView。

  3. 不要忘记妥善管理您的UIImageView。频繁创建对象而不释放将导致您的应用程序崩溃。如果可能,重复使用它们,而不是每次调用方法时都创建它们。