大家好,我是法国人,所以请原谅我的英语。我想要做的就是在随机位置创建新图像,但是在屏幕外面随机定位,并且(非常重要)靠近屏幕两侧(上侧或左侧或右侧或下侧)。就像我想要为它们制作动画一样,屏幕外面会创建,但只是在两侧。我该怎么办呢?
答案 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)。
生成随机数。在这种情况下,arc4random()优于rand()。
创建一个将由NSTimer调用的方法,其中创建了UIImageView。
不要忘记妥善管理您的UIImageView。频繁创建对象而不释放将导致您的应用程序崩溃。如果可能,重复使用它们,而不是每次调用方法时都创建它们。