拉伸图片不失真数组
self.imageView.image=[[UIImage imageNamed:@""] stretchableImageWithLeftCapWidth:5 topCapHeight:30];并发
阻止锁屏,屏幕常亮
常亮 [ [ UIApplication sharedApplication] setIdleTimerDisabled:YES ] ;app
获取main storyboard
UIStoryboard *stoaryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
LoginViewController *login = [stoaryboard instantiateViewControllerWithIdentifier:@"LoginViewController"];ide
图片数组播放
_AnimationImage =[[UIImageView alloc]initWithFrame:CGRectMake(0,20, SCREEN_WIDTH, 100)];
[self.view addSubview:_AnimationImage];
_AnimationImage.animationImages = _ImageDatas;
_AnimationImage.animationDuration=1;
[_AnimationImage startAnimating];url
//0则不打印任何东西
#if 1component
#define NSLog(FORMAT, ...) fprintf(stderr,"[%s:%d行] %s\n",[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
#elseorm
#define NSLog(FORMAT, ...) nil对象
#endif图片
循环遍历开发
for(... in ...)用起来很是方便、简洁,同时 enumerateObjectsUsingBlock: 也有不少新特性:
* 一般enumerateObjectsUsingBlock: 和 (for(... in ...)在效率上基本一致,有时会快些。主要是由于它们都是基于 NSFastEnumeration 实现的. 快速迭代在处理的过程当中须要多一次转换,固然也会消耗掉一些时间. 基于Block的迭代能够达到本机存储同样快的遍历集合. 对于字典一样适用,而数组的迭代却不行。
* 注意"enumerateObjectsUsingBlock" 修改局部变量时, 你须要声明局部变量为 __block 类型.
* enumerateObjectsWithOptions:usingBlock: 支持并发迭代或反向迭代,并发迭代时效率也很是高.
* 对于字典而言, enumerateObjectsWithOptions:usingBlock 也是惟一的方式能够并发实现恢复Key-Value值.
跳转到设置
NSURL*url=[NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication]openURL:url];
isKindOfClass来肯定一个对象是不是一个类的成员,或者是派生自该类的成员
isMemberOfClass只能肯定一个对象是不是当前类的成员
判断字符串包含某个字符
[numberString containsString:@"."];
[numberString rangeOfString:@"."].location != NSNotFound;
系统软件的分享
NSArray *objectsToShare = @[@"http://www.baidu.com"];
UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil];
NSArray *excludedActivities = @[UIActivityTypePostToTwitter, UIActivityTypePostToFacebook,
UIActivityTypePostToWeibo,
UIActivityTypeMessage, UIActivityTypeMail,
UIActivityTypePrint, UIActivityTypeCopyToPasteboard,
UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll,
UIActivityTypeAddToReadingList, UIActivityTypePostToFlickr,
UIActivityTypePostToVimeo, UIActivityTypePostToTencentWeibo];
controller.excludedActivityTypes = excludedActivities;
// Present the controller
[self presentViewController:controller animated:YES completion:nil];
截图,合成图片
//截图
UIGraphicsBeginImageContext(self.view.bounds.size); //currentView 当前的view
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGRect rect = CGRectMake(0, self.view.frame.size.height-228, self.view.frame.size.width,228);
UIImage *resultImg = [UIImage imageWithCGImage:CGImageCreateWithImageInRect(viewImage.CGImage, rect)];
//拼合
[image1 drawInRect:CGRectMake(0, 0, image1.size.width, image1.size.height)];
// Draw image2
[image2 drawInRect:CGRectMake(0, 0, image2.size.width, image2.size.height)];
UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
惟一标识符
NSString *identifierForVendor = [[UIDevice currentDevice].identifierForVendor UUIDString];
NSString *identifierForAdvertising = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];
identifierForVendor对供应商来讲是惟一的一个值,也就是说,由同一个公司发行的的app在相同的设备上运行的时候都会有这个相同的标识符。然而,若是用户删除了这个供应商的app而后再从新安装的话,这个标识符就会不一致。
advertisingIdentifier会返回给在这个设备上全部软件供应商相同的 一个值,因此只能在广告的时候使用。这个值会由于不少状况而有所变化,好比说用户初始化设备的时候便会改变。
利用 NSSetUncaughtExceptionHandler,当程序异常退出的时候,能够先进行处理,而后作一些自定义的动做,好比下面一段代码,就是网上有人写的,直接在发生异常时给某人发送邮件, 使用@try、catch捕获异常: 如下是最简单的代码写法,其中@finally能够去掉: @try { // 可能会出现崩溃的代码 } @catch (NSException *exception) { // 捕获到的异常exception } @finally { // 结果处理 } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler); return YES; } void UncaughtExceptionHandler(NSException *exception) { /** * 获取异常崩溃信息 */ NSArray *callStack = [exception callStackSymbols]; NSString *reason = [exception reason]; NSString *name = [exception name]; NSString *content = [NSString stringWithFormat:@"========异常错误报告========\nname:%@\nreason:\n%@\ncallStackSymbols:\n%@",name,reason,[callStack componentsJoinedByString:@"\n"]]; /** * 把异常崩溃信息发送至开发者邮件 */ NSMutableString *mailUrl = [NSMutableString string]; [mailUrl appendString:@"mailto:test@qq.com"]; [mailUrl appendString:@"?subject=程序异常崩溃,请配合发送异常报告,谢谢合做!"]; [mailUrl appendFormat:@"&body=%@", content]; // 打开地址 NSString *mailPath = [mailUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:mailPath]]; }