先上图:
首先气泡的动画就不多赘述了,搞个组动画很简单,主要说明下气泡的生成:
- (void)createPointArray {
BOOL mark =YES;
//随机生成气泡的中心坐标(定一个自己要求的范围)
NSInteger randomCPX =50+arc4random() % (int)(kScreenWidth-120);
NSInteger randomCPY =kStatusBarHeight+self.navigationController.navigationBar.frame.size.height+30+ arc4random() % (int)(200);
for(NSValue*valuein_pointArr) {
//这里定死了气泡半径是35,所以根据勾股定理,斜边大于70,两个气泡就不会重合
if(sqrt(pow([valueCGPointValue].x- randomCPX,2) +pow( [valueCGPointValue].y- randomCPY,2)) <=70) {
mark=NO;
break;
}
}
if(mark ==YES) {
//得到满足条件的气泡中心坐标
[_pointArr addObject:[NSValue valueWithCGPoint:CGPointMake(randomCPX, randomCPY)]];
}
//我这里定的是一组8个气泡,不够就继续递归生成
if(_pointArr.count<8) {
[self createPointArrays];
}
}
好了,主要就是这样,其他逻辑可以自行实现。
网友评论