iOS开发中会用到的一些方法
0.//解决手势返回失效
self.interactivePopGestureRecognizer.delegate = self;
1、 发送短信
// 如果利用该方式发送短信, 当短信发送完毕或者取消之后不会返回应用程序
// NSURL *url = [NSURL URLWithString:@"sms://10010"];
// [[UIApplication sharedApplication] openURL:url];
// 判断当前设备能否发送短信
if (![MFMessageComposeViewController canSendText]) {
NSLog(@"当前设备不能发送短信");
return ;
}
MFMessageComposeViewController *vc = [[MFMessageComposeViewController alloc] init];
// 设置短信内容
vc.body = @"吃饭了没?";
// 设置收件人列表
vc.recipients = @[@"10010"];
// 设置代理
vc.messageComposeDelegate = self;
// 显示控制器
[self presentViewController:vc animated:YES completion:nil];
2. 打电话
// 弊端:使用该方法进行拨号之后,当电话挂断之后不会返回应用程序, 会停留在通话记录界面
// NSURL *url = [NSURL URLWithString:@"tel://13261936021"];
// [[UIApplication sharedApplication] openURL:url];
// 在拨打电话之后会提示用户是否拨打, 当电话挂断之后会返回应用程序
// NSURL *url = [NSURL URLWithString:@"telprompt://13261936021"];
// [[UIApplication sharedApplication] openURL:url];
4. 图片从中间拉伸
// 左端盖宽度
NSInteger leftCapWidth = bgImage.size.width * 0.5f;
// 顶端盖高度
NSInteger topCapHeight = bgImage.size.height * 0.5f;
bgImage = [bgImage stretchableImageWithLeftCapWidth:leftCapWidth topCapHeight:topCapHeight];
5.弹出动画
//出厂动画
- (void)animationWith:(UIView *)view
{
CAKeyframeAnimation* animation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
animation.duration = 0.5;
NSMutableArray *values = [NSMutableArray array];
[values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(0.1, 0.1, 1.0)]];
[values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(1.2, 1.2, 1.0)]];
[values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(0.9, 0.9, 1.0)]];
[values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.0, 1.0)]];
animation.values = values;
[view.layer addAnimation:animation forKey:nil];
}
6.处理键盘弹出事件, 调整搜索框的高度
-(void)registNoti{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(shown:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardHidden:) name:UIKeyboardWillHideNotification object:nil];
}
7.// 键盘显示
-(void) shown:(NSNotification*) notification
{
// keyboardFrame
CGRect initialFrame = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
CGRect convertedFrame = [self.view convertRect:initialFrame fromView:nil];
CGRect tvFrame = self.infoTabaleView.frame ;
tvFrame.size.height = convertedFrame.origin.y - 60;
self.infoTabaleView.frame = tvFrame ;
}
8.// 键盘隐藏
-(void) keyboardHidden:(NSNotification*) notification
{
CGRect tvFrame = self.infoTabaleView.frame;
tvFrame.size.height = _initialTVHeight;
self.infoTabaleView.frame = tvFrame;
}
9.清理缓存
UIAlertView * alert =[ [UIAlertView alloc]initWithTitle:@"提示" message:@"是否删除缓存" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:@"取消", nil];
NSString * documentPath =[NSString stringWithFormat:@"%@/Documents",NSHomeDirectory()];
NSLog(@"%@",documentPath);
BOOL isDataExist=[[NSFileManager defaultManager]fileExistsAtPath:documentPath];
NSLog(@"~~~~~~~%d",isDataExist);
if (isDataExist)
{
long long content=[[[NSFileManager defaultManager]attributesOfItemAtPath:documentPath error:nil]fileSize];
float size=content/1024.0;
NSString * content2 = [NSString stringWithFormat:@"%.2fMB",size];
alert.message = [@"是否删除缓存" stringByAppendingString:content2];
[ [NSFileManager defaultManager]removeItemAtPath:documentPath error:nil];
[alert show] ;
}
else
{
alert.message = @"暂无缓存";
[alert show];
}
10.图片裁剪: 比如星级显示的时候:
starImageView.contentMode=UIViewContentModeLeft;
//设置剪裁
starImageView.clipsToBounds=YES;
float x=65/5.0*num;
starImageView.frame=CGRectMake(0, 0, x, 23);
11.判断版本号:
NSString *key = @"CFBundleVersion";
// 取出沙盒中存储的上次使用软件的版本号
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *lastVersion = [defaults stringForKey:key];
// 获得当前软件的版本号
NSString *currentVersion = [NSBundle mainBundle].infoDictionary[key];
if ([currentVersion isEqualToString:lastVersion]) {
// 显示状态栏
} else { // 新版本
[defaults setObject:currentVersion forKey:key];
[defaults synchronize];
}
12.根据颜色得到图片
- (UIImage *)imageWithColor:(UIColor *)color
{
CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, rect);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
13.// 得当前View上的图片
+ (UIImage *)captureImageWithView:(UIView *)view
{
// 1.创建bitmap上下文
UIGraphicsBeginImageContext(view.frame.size);
// 2.将要保存的view的layer绘制到bitmap上下文中
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
// 3.取出绘制号的图片
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
return newImage;
}
14.图片压缩
+ (UIImage*)imageWithImageSimple:(UIImage*)image scaledToSize:(CGSize)newSize
{
// Create a graphics image context
UIGraphicsBeginImageContext(newSize);
// Tell the old image to draw in this new context, with the desired
// new size
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
// Get the new image from the context
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
// End the context
UIGraphicsEndImageContext();
// Return the new image.
return newImage;
}