MyException - 我的异常网
当前位置:我的异常网» Iphone » 1些小技巧

1些小技巧

www.MyException.Cn  网友分享于:2013-12-05  浏览:0次
一些小技巧

记录下一些不常用的技巧,以防忘记,复制用。

 

1、获取当前的View在Window的frame:

UIWindow * window=[[[UIApplication sharedApplication] delegate] window];  
CGRect rect=[_myButton convertRect:_myButton.bounds toView:window];

 

2、UIImageView 和UILabel 等一些控件,需要加这句才能setCorn

_myLabel.layer.masksToBounds = YES;

 

3、手机上的沙盒路径要加"Documents",不然存储写入失败!mac上不用!

[_myArray writeToFile:[[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]  stringByAppendingPathComponent:@"shopCategory.plist"] atomically:YES];
 
NSArray *tempAllData = [NSArray arrayWithContentsOfFile:[[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]  stringByAppendingPathComponent:@"shopCategory.plist"]];

 

4、图片拉伸不失真,如聊天软件对话气泡

1)、方法1,比较老的,

UIImage *tempImage2 = [UIImage imageNamed:@"sub.png"];
tempImage2 = [tempImage2 stretchableImageWithLeftCapWidth:tempImage2.size.width/2 topCapHeight:0];

 

 2)、方法2,比较新的

UIImage *tempImage3 = [UIImage imageNamed:@"sub"];

CGFloat tempH = tempImage3.size.height/2;
CGFloat tempW = tempImage3.size.width/2;
    
UIEdgeInsets tempEdg = UIEdgeInsetsMake(tempH, tempW, tempH, tempW);
    
tempImage3 = [tempImage3 resizableImageWithCapInsets:tempEdg resizingMode:UIImageResizingModeStretch];

 

 5、视频截取缩略图,其中CMTimeMakeWithSeconds(5,1),调整截图帧数/秒数,一般不用特意去修改,不做参数传入,除非片头一段时间都一样的视频。

#import <AVFoundation/AVFoundation.h>

-(UIImage *)getThumbnailImage:(NSString *)videoURL
{
    AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:[NSURL fileURLWithPath:videoURL] options:nil];
    
    AVAssetImageGenerator *gen = [[AVAssetImageGenerator alloc] initWithAsset:asset];
    
    gen.appliesPreferredTrackTransform = YES;
    //控制截取时间
    CMTime time = CMTimeMakeWithSeconds(5, 1);
    
    NSError *error = nil;
    
    CMTime actualTime;
    
    CGImageRef image = [gen copyCGImageAtTime:time actualTime:&actualTime error:&error];
    
    UIImage *thumb = [[UIImage alloc] initWithCGImage:image];
    
    CGImageRelease(image);
    
    return thumb;
}

 

 6、cell下划线左边顶住屏幕左边。

cell.preservesSuperviewLayoutMargins = NO;
cell.layoutMargins = UIEdgeInsetsZero;
cell.separatorInset = UIEdgeInsetsZero;

 

7、去除xcode8冗余信息,虽然已经记住了。

OS_ACTIVITY_MODE    disable

 

8、播放音频

1)工程内音频

1-1)、获取音频路径

NSString *path = [[NSBundle mainBundle] pathForResource:@"shakebell" ofType:@"wav"];
    
NSURL *url = [NSURL fileURLWithPath:path];

 

 1-2)、创建音频播放ID

SystemSoundID soundID;
AudioServicesCreateSystemSoundID((__bridge CFURLRef _Nonnull)(url), &soundID);

 

1-3)、Play

AudioServicesPlaySystemSound(soundID);

 

2)系统音频,参数为1000-1351,具体查表,如1007为“sms-received1”

AudioServicesPlaySystemSound(1007);

 

9、字体自适应

1)、固定的Frame,自适应Font大小,如数量增减,1和1000。

[label1 setAdjustsFontSizeToFitWidth:YES];

 

2)、固定的Font,自适应Frame,用于信息类显示

[label2 sizeToFit]; 

 

3)、固定的Font,获取自适应Frame值,反过来设置Label的Frame,用于信息类显示。这里的100是等下设置Label的width,也是返回的rect.frame.size.width

CGRect rect = [templabel.text boundingRectWithSize:CGSizeMake(100, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:templabel.font} context:nil];

 

10、AFNetworking 检测网络连接状态

[[AFNetworkReachabilityManager sharedManager]startMonitoring];

[[AFNetworkReachabilityManager sharedManager]setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        NSLog(@"%ld",status);
    }];

 

11、编辑相关

1)键盘事件通知

1-1)、弹出键盘可能盖住TextField。监听键盘的通知

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(moveView:) name:UIKeyboardDidChangeFrameNotification object:nil];

 

1-2)、moveView方法里接收通知,tempTime是键盘动画时间,tempY是键盘当前的y轴位置。(接着要移动评论框或者移动后面的ScrollView都可以)

CGFloat tempTime = [[noti.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue];
CGFloat tempY = [[noti.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey]CGRectValue].origin.y

//重置约束条件
//self.theBottomSpace.constant = ?;

[UIView animateWithDuration:duration animations:^{
        //更新约束
        [self.view layoutIfNeeded];

    }];

 

2)dealloc记得移除

[[NSNotificationCenter defaultCenter]removeObserver:self];

 

3)touchesBegan:withEvent && scrollViewDidScroll -->屏幕点击&&屏幕滑动要取消编辑状态

[self.view endEditing:YES];

 

12、上传图片(头像)

1-1)、把Image打成NSData

NSData *imagedata = UIImageJPEGRepresentation(tempImage, 1.0);

 

1-2)、AFNetworking的POST方法填如下。formData:POST方法里的Block参数,name:跟服务器有关,filename:随意填,mimeType:就image/jpg。

[formData appendPartWithFileData:imagedata name:@"imgFile" fileName:@"idontcare.jpg" mimeType:@"image/jpg"];

 

13、强制布局

[self.view layoutIfNeeded];

 

14、图片双击缩放

1)scrollView才可以缩放,所以要把ImageView加在scrollView,给scrollView(这里的 self )添加手势识别。要设最大/小缩放比例!

UITapGestureRecognizer *imageTwoTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(twoTapAction:)];

imageTwoTap.numberOfTapsRequired = 2;

[self addGestureRecognizer: imageTwoTap];

 

2)第一次点哪放大哪,第二次恢复原来大小

#define SCALE_WIDTH  60    		//要放大的局部宽度大小
#define SCALE_HEIGHT 60    		//要放大的局部高度大小

-(void)twoTapAction:(UITapGestureRecognizer *)tempTap
{
    if (self.zoomScale != 1.0)
    {
        [self setZoomScale:1.0 animated:YES];
    }
    else
    {
        CGPoint tempPoint = [tempTap locationInView:self];
        [self zoomToRect:CGRectMake(tempPoint.x-SCALE_WIDTH/2, tempPoint.y-SCALE_HEIGHT/2, SCALE_WIDTH, SCALE_HEIGHT) animated:YES];
    }
}

 

 

 

文章评论

老程序员的下场
老程序员的下场
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
如何成为一名黑客
如何成为一名黑客
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
程序员都该阅读的书
程序员都该阅读的书
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序员应该关注的一些事儿
程序员应该关注的一些事儿
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
 程序员的样子
程序员的样子
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
总结2014中国互联网十大段子
总结2014中国互联网十大段子
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
一个程序员的时间管理
一个程序员的时间管理
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
程序员和编码员之间的区别
程序员和编码员之间的区别
编程语言是女人
编程语言是女人
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
那些争议最大的编程观点
那些争议最大的编程观点
Java程序员必看电影
Java程序员必看电影
旅行,写作,编程
旅行,写作,编程
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
我的丈夫是个程序员
我的丈夫是个程序员
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
10个调试和排错的小建议
10个调试和排错的小建议
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
中美印日四国程序员比较
中美印日四国程序员比较
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
程序员的鄙视链
程序员的鄙视链
我是如何打败拖延症的
我是如何打败拖延症的
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
漫画:程序员的工作
漫画:程序员的工作
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有