头文件的引用
#import
<time.h>
#import
<mach/mach_time.h>
srandom()的使用
srandom((unsigned)(mach_absolute_time()
& 0xFFFFFFFF));
直接使用 random() 来调用随机数
iOS开发取随机数肯定会遇到的,暂时小结一下,好像有个arc4random(),所以假如你想取80到100的随机数,就可以写成intrandomNumber
= arc4random()
+80
int index = arc4random() % 6 +1;就是1到6的随机数了。
还有很多其它的取随机数的方法,论坛上也经常讨论
有网友问怎么生成不重复的随机数,说是生成一个随机种子如:
srand(time(NULL));rand()
%1000;
还有一个这样的函数round(random()+10);取到的是10~24之间的数,但是是个伪随机数
怎么获得0到1之间的随机数,不包括0和1
思路是:求1--100之间的随机数就可以了然后/100
srand(time(0));
(float)(rand() % 100) /100;
(float)(1+arc4random()�)/100
总结:随机数最好使用arc4random,因为使用random()必须手动设置随机种子srandom(time(NULL));否则产生的就是伪随机数。
网友有个这样的想法:
NSArray *temp = [NSArrayarrayWithObjects:@"1",@"2",
@"3",@"4",
@"5",@"6",
nil];
NSMutableArray
*tempArray = [[NSMutableArrayalloc]initWithArray:temp];
NSMutableArray*resultArray
= [[NSMutableArrayalloc]init];
int
i;
int
count = temp.count;
for
(i =0; i < count; i ++) {
int
index =arc4random() % (count - i);
[resultArray addObject:[tempArrayobjectAtIndex:index]];
[tempArray removeObjectAtIndex:index];
}
[tempArrayrelease];
NSLog(@"resultArray
is %@",resultArray);
resultArray里面每个object的intValue就是你要的不重复随机数了
2 在UIImageView 中旋转图像
float rotateAngle = M_PI;
CGAffineTransform
transform =CGAffineTransformMakeRotation(rotateAngle);
imageView.transform
= transform;
以上代码旋转imageView, 角度为rotateAngle, 方向可以自己测试哦!
3 在Quartz中如何设置旋转点
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage
imageNamed:@"bg.png"]];
imageView.layer.anchorPoint
= CGPointMake(0.5, 1.0);
这个是把旋转点设置为底部中间。记住是在QuartzCore.framework中才得到支持。
4 创建.plist文件并存储
NSString *errorDesc; //用来存放错误信息
NSMutableDictionary
*rootObj = [NSMutableDictionary dictionaryWithCapacity:4]; //NSDictionary, NSData等文件可以直接转化为plist文件
NSDictionary *innerDict;
NSString
*name;
Player
*player;
NSInteger
saveIndex;
for(int
i = 0; i < [playerArray count]; i++) {
player
= nil;
player
= [playerArray objectAtIndex:i];
if(player
== nil)
break;
name
= player.playerName;// This "Player1" denotes the player name could also be the computer name
innerDict
= [self getAllNodeInfoToDictionary:player];
[rootObj
setObject:innerDict forKey:name]; // This "Player1" denotes the person who start this game
}
player
= nil;
NSData *plistData = [NSPropertyListSerialization
dataFromPropertyList:(id)rootObj format:NSPropertyListXMLFormat_v1_0 errorDescription:&errorDesc];
红色部分可以忽略,只是给rootObj添加一点内容。这个plistData为创建好的plist文件,用其writeToFile方法就可以写成文件。下面是代码:
NSString
*documentsPath = [self getDocumentsDirectory];
NSString
*savePath = [documentsPath stringByAppendingPathComponent:@"save.plist"];
if
(plistData) {
[plistData
writeToFile:savePath atomically:YES];
}
else
{
NSLog(errorDesc);
[errorDesc
release];
}
- (NSString *)getDocumentsDirectory {
NSArray
*paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
return
[paths objectAtIndex:0];
}
4 读取plist文件并转化为NSDictionary
NSString *documentsPath = [self getDocumentsDirectory];
NSString
*fullPath = [documentsPath stringByAppendingPathComponent:@"save.plist"];
NSMutableDictionary*
plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:fullPath];
5 读取一般性文档文件
NSString *tmp;
NSArray
*lines;
lines
= [[NSString stringWithContentsOfFile:@"testFileReadLines.txt"]
componentsSeparatedByString:@"\n"];
NSEnumerator
*nse = [lines objectEnumerator];
// 读取<>里的内容
while(tmp
= [nse nextObject]) {
NSString
*stringBetweenBrackets = nil;
NSScanner
*scanner = [NSScanner scannerWithString:tmp];
[scanner
scanUpToString:@"<" intoString:nil];
[scanner
scanString:@"<" intoString:nil];
[scanner
scanUpToString:@">" intoString:&stringBetweenBrackets];
NSLog([stringBetweenBrackets
description]);
}
对于读写文件,还有补充,暂时到此。随机数和文件读写在游戏开发中经常用到。所以把部分内容放在这,以便和大家分享,也当记录,便于查找。
6 隐藏NavigationBar
[self.navigationController setNavigationBarHidden:YES animated:YES];
在想隐藏的ViewController中使用就可以了。