文档章节

一些常用的知识(一)

人独立
 人独立
发布于 2015/01/16 11:58
字数 1226
阅读 14
收藏 1
1获取系统语言设置
 
     NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
 
     NSArray *languages = [userDefault objectForKey:@"AppleLanguages"];
 
     NSString *preferredLang = [languages objectAtIndex:0];
 
2
 
缓存路径下文件大小
 
 
- (unsigned long long int) cacheFolderSize 
 
{
 
    NSFileManager  *_manager = [NSFileManager defaultManager];
 
    NSArray *_cachePaths =  NSSearchPathForDirectoriesInDomains(NSCachesDirectory,
                                                NSUserDomainMask, YES);
 
    NSString  *_cacheDirectory = [_cachePaths objectAtIndex:]; 
 
    NSArray  *_cacheFileList;
 
    NSEnumerator *_cacheEnumerator;
 
    NSString *_cacheFilePath;
 
    unsigned long long int _cacheFolderSize = ;
 
    _cacheFileList = [ _manager subpathsAtPath:_cacheDirectory];
 
   _cacheEnumerator = [_cacheFileList objectEnumerator];
 
    while (_cacheFilePath = [_cacheEnumerator nextObject]) 
 
   {
 
         NSDictionary *_cacheFileAttributes = [_managerfileAttributesAtPath:  
 
         [_cacheDirectory   stringByAppendingPathComponent:_cacheFilePath]
 
         traverseLink:YES];
 
      _cacheFolderSize += [_cacheFileAttributes fileSize];
 
    }
 
// 单位是字节
 
    return _cacheFolderSize;
 
}
 
3Popover push 时 Frame无法改变解决办法
 
在popover中的ViewController中实现:
 
- (void)viewWillAppear:(BOOL)animated 
{
 
   CGSize size = CGSizeMake(320, 480); // size of view in popover  
 
   self.contentSizeForViewInPopover = size; 
 
   [super viewWillAppear:animated]; 
 
}
 
4tableview滑动导致NSTimer和委托回调停止解决办法
 
/ /请求回调
 
NSURLRequest  * 请求  =  ...
 
scheduleInRunLoop :[ NSRunLoop  currentRunLoop ] 
                                            forMode :NSRunLoopCommonModes ] 
[ 连接开始] / /定时器回调
 
NSTimer * updateTimer = [NSTimer scheduledTimerWithTimeInterval:0.01f目标:自我选择:选择(updatePencent)的UserInfo:无重复:是];
 
* NSRunLoop主要= [NSRunLoop currentRunLoop] 
[主要addTimer:updateTimer forMode:NSRunLoopCommonModes];
 
5手势识别类
 
UIGestureRecognizer
 
 
6SFHFKeychainUtils 存储信息
 
苹果SDK自带的就有密码保护,使用方法很简单,如下:
 
1、引入Security.frameWork框架。
 
2、引入头文件:SFHKeychainUtils.h.
 
3、存密码:
 
[SFHFKeychainUtils storeUsername:@"dd" andPassword:@"aa"forServiceName:SERVICE_NAMEupdateExisting:1 error:nil];
 
[SFHFKeychainUtils deleteItemForUsername:@"dd" andServiceName:SERVICE_NAME error:nil];
 
4、取密码:
 
NSString *passWord =  [SFHFKeychainUtils getPasswordForUsername:@"dd"andServiceName:SERVICE_NAMEerror:nil];
 
7missing required architecture i386 in file 解决办法
 
在TargetInfo里面修改 Framework Search Pasths 删除里面内容就可以了。
 
 
8view 放大缩小动画效果
 
//创建缩小了的视图
myWeiBoImageVC = [[UIViewController alloc] init];
myWeiBoImageVC.view.clipsToBounds = YES;
myWeiBoImageVC.view.alpha = 0.0;
myWeiBoImageVC.view.frame = CGRectMake(64, 0, 1024-64, 768-20);
[self.view addSubview:myWeiBoImageVC.view];
     
CGAffineTransform newTransform = 
CGAffineTransformScale(myWeiBoImageVC.view.transform, 0.1, 0.1);
[myWeiBoImageVC.view setTransform:newTransform];
myWeiBoImageVC.view.center = CGPointMake(670, 100);
  
[self performSelector:@selector(imageViewControllerBigAnimation)];
 
//放大刚刚创建缩小后的视图
- (void)imageViewControllerBigAnimation{
    
    [UIView beginAnimations:@"imageViewBig" context:nil];
    [UIView setAnimationDuration:0.5];   
    CGAffineTransform newTransform =            CGAffineTransformConcat(myWeiBoImageVC.view.transform,  CGAffineTransformInvert(myWeiBoImageVC.view.transform));
    [myWeiBoImageVC.view setTransform:newTransform];
    myWeiBoImageVC.view.alpha = 1.0;
    myWeiBoImageVC.view.center = CGPointMake(416, 510);
    [UIView commitAnimations];
    
}
 
//缩小视图 隐藏
 
- (void)imageViewControllerSmallAnimation{
 
    [UIView beginAnimations:@"imageViewSmall" context:nil];
    [UIView setAnimationDuration:0.5];
    CGAffineTransform newTransform =  CGAffineTransformScale(myWeiBoImageVC.view.transform, 0.1, 0.1);
    [myWeiBoImageVC.view setTransform:newTransform];
    myWeiBoImageVC.view.center = CGPointMake(670, 100);
    [UIView commitAnimations];
    
}
 
9UIScrollView 控制View缩放
 
allImageScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 768, 1024)];
allImageScrollView.minimumZoomScale = 0.3;
allImageScrollView.maximumZoomScale = 1.0;
allImageScrollView.backgroundColor = [UIColor clearColor];
allImageScrollView.delegate = self;
[self.view addSubview:allImageScrollView];
 
mPicStatusesViewController = [[PicStatusesViewController alloc] init];
[allImageScrollView addSubview:mPicStatusesViewController.view];
 
//UIScrollView Delegete 实现
 
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
 
{
    return mPicStatusesViewController.view; //返回ScrollView上添加的需要缩放的视图
}
 
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
 
{
    //缩放操作中被调用
}
 
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale
 
{
    //缩放结束后被调用
  }
 
10、iOS3.2 播放视频
 
NSString *urlString = [NSString stringWithString:@"视频url"];
 
NSURL *movieUrl = [[NSURL alloc] initWithString:urlString];
     
MPMoviePlayerController *myMoviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieUrl];
myMoviePlayer.view.frame = CGRectMake(250, 250, 350, 350);
[self.view addSubview:myMoviePlayer.view];    
myMoviePlayer.shouldAutoplay = YES;
myMoviePlayer.scalingMode= MPMovieScalingModeAspectFit;  
[myMoviePlayer play];
 
 
11、谷歌地图翻起动画效果
 
    CATransition *animation = [CATransition animation];
    [animation setDelegate:self];
    [animation setDuration:0.35];
    [animation setTimingFunction:UIViewAnimationCurveEaseInOut];
    if (!curled){
 
        animation.type = @"pageCurl";
        animation.fillMode = kCAFillModeForwards;
        animation.endProgress = 0.40;
    } else {
        animation.type = @"pageUnCurl";
        animation.fillMode = kCAFillModeBackwards;
        animation.startProgress = 0.30;
    }
    [animation setRemovedOnCompletion:NO];
    [self.view exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
     
    [self.view.layer addAnimation:animation forKey:@"pageCurlAnimation"];
 
12、给View添加阴影 和边框
 
UIImageView *imgvPhoto  = [UIImageView alloc] init];
 
//添加边框
   CALayer *layer = [_imgvPhoto layer];
    layer.borderColor = [[UIColor whiteColor] CGColor];
    layer.borderWidth = 5.0f;
//添加四个边阴影
    _imgvPhoto.layer.shadowColor = [UIColor blackColor].CGColor;
    _imgvPhoto.layer.shadowOffset = CGSizeMake(0, 0);
    _imgvPhoto.layer.shadowOpacity = 0.5;
    _imgvPhoto.layer.shadowRadius = 10.0;
//添加两个边阴影
    _imgvPhoto.layer.shadowColor = [UIColor blackColor].CGColor;
    _imgvPhoto.layer.shadowOffset = CGSizeMake(4, 4);
    _imgvPhoto.layer.shadowOpacity = 0.5;
    _imgvPhoto.layer.shadowRadius = 2.0;
 
13、使用NSTimer与UIView动画实现飘雪效果
 
viewDidLoad事件中,增加一个图片及定时器并启动,这里的pic请在头文件中定义。
 
-(void)viewDidLoad{
 [super viewDidLoad];
 self.pic = [UIImage imageNamed:@"snow.png"];//初始化图片
 //启动定时器,实现飘雪效果
 [NSTimer scheduledTimerWithTimeInterval:(0.2) target:self selector:@selector(ontime) userInfo:nil repeats:YES];
}
 
然后再实现定时器定时调用的ontime方法:
-(void)ontime{
 UIImageView *view = [[UIImageView alloc] initWithImage:pic];//声明一个UIImageView对象,用来添加图片
 view.alpha = 0.5;//设置该view的alpha为0.5,半透明的
 int x = round(random()20);//随机得到该图片的x坐标
 int y = round(random()20);//这个是该图片移动的最后坐标x轴的
 int s = round(random())+10;//这个是定义雪花图片的大小
 int sp = 1/round(random()0)+1;//这个是速度
 view.frame = CGRectMake(x, -50, s, s);//雪花开始的大小和位置
 [self.view addSubview:view];//添加该view
 [UIView beginAnimations:nil context:view];//开始动画
 [UIView setAnimationDuration:10*sp];//设定速度
 view.frame = CGRectMake(y, 500, s, s);//设定该雪花最后的消失坐标
 [UIView setAnimationDelegate:self];
 [UIView commitAnimations];
}
 
14、配置Xcode 看程序崩溃信息
 
1、在xcode中的左侧目录中找到Executables 打开
 
2、双击和工程名一样的文件。
 
3、在打开的文件中的Arguments选项,在下面的框中加入Name: NSZombieEnabled 设置value为YES。
 
15、程序中发送邮件和检测设备邮箱是否被配置
 
-(void)addEmail{
 
Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
 
if (mailClass != nil){
 
    if ([mailClass canSendMail]){
 
        [self displayComposerSheet];
 
    }else{
 
        [self launchMailAppOnDevice];
 
    }
 
}else{
 
    [self launchMailAppOnDevice];
 
    }
 
}
 
-(void)displayComposerSheet
 
{
 
MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];
 
controller.navigationBar.tag = 1002;
 
[self.navigationController.navigationBar setNeedsDisplay];
 
controller.mailComposeDelegate = self;
 
[controller setSubject:@"意见反馈"];
 
[controller setToRecipients:[[NSArray alloc] initWithObjects:@"555@cifco.net.cn",nil]];
 
NSString *emailBody = nil;
 
[controller setMessageBody:emailBody isHTML:YES];
 
[self presentModalViewController:controller animated:YES];
 
[controller release];
 
}
 
#pragma mark mailComposeDelegate ----
 
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error 
 
{
 
if (result == MFMailComposeResultSent) 
 
{
 
[self dismissModalViewControllerAnimated:YES];
 
}
 
if (result == MFMailComposeResultSaved) 
 
{
 
[self dismissModalViewControllerAnimated:YES];
 
}
 
if (result == MFMailComposeResultFailed) 
 
{
 
Emailalert = [[UIAlertView alloc] initWithTitle:@"" message:@"发送失败" delegate:selfcancelButtonTitle:@"知道了" otherButtonTitles:nil];
 
[Emailalert show];
 
}
 
if (result == MFMailComposeResultCancelled) 
 
{
 
[self dismissModalViewControllerAnimated:YES];
 
}
 
}
 
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
 
{
 
if(alertView == Emailalert)
 
{
 
if (buttonIndex == ) 
 
{
 
[self dismissModalViewControllerAnimated:YES];
 
}
 
}else
 
{
 
if (buttonIndex == ) 
 
{
 
//[self dismissModalViewControllerAnimated:YES];
 
}else
 
{
 
NSString *recipients = @"mailto:theonelgq@gmail.com?cc=theone_liuguoqing@163.com&subject=text";
 
NSString *body = @"&body=text!";
 
NSString *email = [NSString stringWithFormat:@"%@%@", recipients, body];
 
email = [email stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:email]];
 
}
 
}
 
}
 
#pragma mark -
 
#pragma mark Workaround
 
-(void)launchMailAppOnDevice
 
{
 
isEmailalert = [[UIAlertView alloc] initWithTitle:@"警告" message:@"请配置您的邮箱" delegate:selfcancelButtonTitle:@"取消" otherButtonTitles:@"好的",nil];
 
[isEmailalert show];
 
}


© 著作权归作者所有

人独立
粉丝 5
博文 39
码字总数 17213
作品 0
昌平
程序员
私信 提问
自省

就在前两天写完一部分Handler源码分析的文章后意识到了两个问题: 现在的学习进度太慢了,如果以这个速度下去定好的目标根本完不成。 我忘了来简书的初心,来简书不是来交朋友的,也不是为了...

吴七禁
2017/11/10
0
0
Docker 与 Kubernetes 开源书 - docker-book

本开源书,包含两部分: Docker Docker部分,包括: 入门 Dockerfile详解 镜像管理 工具 持久化 网络 Docker Compose 七大主题,涵盖Docker常用命令、Dockerfile常用命令、网络、存储、Docke...

周立_ITMuch
2018/12/25
0
0
Java语言中的---字符串

day09 Java语言中的---字符串 一、字符串概述: 字符串在程序中是一个非常重要的知识点,在处理一系列程序的时候都会定义一些字符串来使用。下面我们就来看看如何定义和使用一个字符串。 二、...

孤独一夜
2017/09/27
0
0
又迷茫了,求PHP师傅指点

本人大四,河南一所二本院校,计算机专业,马上就毕业了,大三时自学的PHP,目前学了一年多了,说一下目前的知识吧. css +html 基本掌握,会用点css3特效. php基础知识还差不多,各个方面都了解. mys...

suconghou
2013/12/04
3.1K
56
C语言数组讲解(二)

谨记 一个人的潜力有多大、能力有多强,是一个未知数,因为我相信能力就是干出来的,以前读过一本书《能力就是干出来的》,这本书就讲述了化保力人生最艰难和辉煌的那段时间,一个农村家境非...

长风留言
2017/11/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

线程池之ThreadPoolExecutor使用

ThreadPoolExecutor提供了四个构造方法: ThreadPoolExecutor构造方法.png 我们以最后一个构造方法(参数最多的那个),对其参数进行解释: public ThreadPoolExecutor(int corePoolSize, /...

天王盖地虎626
23分钟前
1
0
小程序登陆流程

http://www.bubuko.com/infodetail-2592845.html

为何不可1995
32分钟前
1
0
Consul+Spring boot的服务注册和服务注销

一图胜千言 先看一看要做事情,需要在Consul上面实现注册中心的功能,并以2个Spring boot项目分别作为生产者,消费者。 Consul 假设已经完成文章《Consul的开发者模式之Docker版》中的所有的...

亚林瓜子
38分钟前
4
0
MySQL高可用之基于Galera复制跨地域节点分布的滥用

mysql使用教程 MySQL高可用之基于Galera复制跨地域节点分布的滥用 2018-11-22 02:15 8335 85 让我们再一次讨论MySQL高可用性(HA)和同步复制。 它是地理上分布区域上一些高可用性参考架构解...

rootliu
49分钟前
1
0
js判断pc还是移动端

var pcyidong =/(iPhone|iPad|iPod|iOS|Android)/i.test(navigator.userAgent); 如果pcyidong的值为false则用户的浏览器为pc端 如果pcyidong的值为true则用户浏览器为移动端 if (pcyidong =...

流年那么伤
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部