iOS开发中一些有用的小代码

来源:互联网 发布:中国企业软件市场规模 编辑:程序博客网 时间:2024/05/09 05:04

iOS开发中一些有用的小代码

转载:http://www.th7.cn/Program/IOS/201303/128264.shtml

1.判断邮箱格式是否正确的代码:
// 利用正则表达式验证
-( BOOL )isValidateEmail:( NSString  *)email
{
NSString  *emailRegex =  @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+//.[A-Za-z]{2,4}" ;
NSPredicate  *emailTest = [ NSPredicate   predicateWithFormat : @"SELF MATCHES%@",emailRegex];
return  [emailTest  evaluateWithObject :email];
}
 
2.图片压缩
用法: UIImage *yourImage= [self imageWithImageSimple:image scaledToSize:CGSizeMake(210.0, 210.0)];
// 压缩图片
- ( UIImage *)imageWithImageSimple:( UIImage *)image scaledToSize:( CGSize )newSize
{
// Create a graphics image context
UIGraphicsBeginImageContext (newSize);
// Tell the old image to draw in this newcontext, 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;
}
 //裁剪图片

+(UIImage *)cutTheImage:(UIImage *)image withCGSize:(CGSize )size

{

    if (image)

    {

        float min = MIN(image.size.width,image.size.height);

        CGRect rectMAX = CGRectMake((image.size.width-min)/2, (image.size.height-min)/2, min, min);

        CGImageRef subImageRef = CGImageCreateWithImageInRect(image.CGImage, rectMAX);

        UIGraphicsBeginImageContext(rectMAX.size);

        CGContextRef context = UIGraphicsGetCurrentContext();

        CGContextDrawImage(context, CGRectMake(0, 0, min, min), subImageRef);

        UIImage *viewImage = [UIImage imageWithCGImage:subImageRef];

        UIGraphicsEndImageContext();

        CGImageRelease(subImageRef);

        return viewImage;

    }


    return nil;

}


3.亲测可用的图片上传代码
- ( IBAction )uploadButton:( id )sender {
UIImage  *image = [ UIImage   imageNamed : @"1.jpg" ]; // 图片名
NSData  *imageData =  UIImageJPEGRepresentation (image, 0.5 );// 压缩比例
NSLog ( @" 字节数 :%i" ,[imageData length]);
// post url
NSString  *urlString =  @"http://192.168.1.113:8090/text/UploadServlet" ;
// 服务器地址
// setting up the request object now
NSMutableURLRequest  *request = [[ NSMutableURLRequest   alloc ]  init ] ;
[request  setURL :[ NSURL   URLWithString :urlString]];
[request  setHTTPMethod : @"POST" ];
//
NSString  *boundary = [ NSString   stringWithString : @"---------------------------14737809831466499882746641449" ];
NSString  *contentType = [ NSString   stringWithFormat : @"multipart/form-data;boundary=%@",boundary];
[request  addValue :contentType  forHTTPHeaderField :  @"Content-Type" ];
//
NSMutableData  *body = [ NSMutableData   data ];
[body  appendData :[[ NSString   stringWithFormat : @"/r/n--%@/r/n" ,boundary] dataUsingEncoding : NSUTF8StringEncoding ]];
[body  appendData :[[ NSString   stringWithString : @"Content-Disposition:form-data; name=/"userfile/"; filename=/"2.png/"/r/n" ]  dataUsingEncoding : NSUTF8StringEncoding ]]; // 上传上去的图片名字
[body  appendData :[[ NSString   stringWithString : @"Content-Type: application/octet-stream/r/n/r/n" ]  dataUsingEncoding : NSUTF8StringEncoding ]];
[body  appendData :[ NSData   dataWithData :imageData]];
[body  appendData :[[ NSString   stringWithFormat : @"/r/n--%@--/r/n" ,boundary] dataUsingEncoding : NSUTF8StringEncoding ]];
  [request  setHTTPBody :body];
// NSLog(@"1-body:%@",body);
NSLog ( @"2-request:%@" ,request);
NSData  *returnData = [ NSURLConnection   sendSynchronousRequest :request  returningResponse :nil   error : nil ];
NSString  *returnString = [[ NSString   alloc ]  initWithData :returnData  encoding :NSUTF8StringEncoding ];
NSLog ( @"3- 测试输出: %@" ,returnString );
 
4.给imageView加载图片
UIImage  *myImage = [ UIImage   imageNamed : @"1.jpg" ];
   [ imageView   setImage :myImage];
   [ self . view   addSubview : imageView ];
 
5.对图库的操作
选择相册:
UIImagePickerControllerSourceTypesourceType=UIImagePickerControllerSourceTypeCamera;
   if (![UIImagePickerControllerisSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
       sourceType=UIImagePickerControllerSourceTypePhotoLibrary;
   }
   UIImagePickerController * picker = [[UIImagePickerControlleralloc]init];
   picker.delegate = self;
   picker.allowsEditing=YES;
   picker.sourceType=sourceType;
   [self presentModalViewController:picker animated:YES];
选择完毕:
 -(void)imagePickerController:(UIImagePickerController*)pickerdidFinishPickingMediaWithInfo:(NSDictionary *)info
{
   [picker dismissModalViewControllerAnimated:YES];
   UIImage * image=[info objectForKey:UIImagePickerControllerEditedImage];
   [self performSelector:@selector(selectPic:) withObject:imageafterDelay:0.1];
}
 -(void)selectPic:(UIImage*)image
{
   NSLog(@"image%@",image); 
   imageView = [[UIImageView alloc] initWithImage:image];
   imageView.frame = CGRectMake(0, 0, image.size.width, image.size.height);
[self.viewaddSubview:imageView];
   [self performSelectorInBackground:@selector(detect:) withObject:nil];
}
detect 为自己定义的方法,编辑选取照片后要实现的效果
取消选择:
 -(void)imagePickerControllerDIdCancel:(UIImagePickerController*)picker 
{
   [picker dismissModalViewControllerAnimated:YES];
}
 
6.跳到下个View
nextWebView  = [[ WEBViewController   alloc ]  initWithNibName : @"WEBViewController"   bundle :nil ];
[ self   presentModalViewController : nextWebView   animated : YES ];
 
 
7.创建一个UIBarButton右边按钮
UIBarButtonItem  *rightButton = [[ UIBarButtonItem   alloc ]  initWithTitle : @" 右边 "   style :UIBarButtonItemStyleDone   target : self   action : @selector (clickRightButton)];
[ self . navigationItem   setRightBarButtonItem :rightButton];
 
8.设置navigationBar隐藏
self . navigationController . navigationBarHidden  =  YES ;//
 
9.UIlabel多行文字自动换行 (自动折行)
UIView *footerView = [[UIView alloc]initWithFrame:CGRectMake(10, 100, 300, 180)];
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(10, 100, 300, 150)];
label.text = @"Hello world! Hello world!Hello world! Hello world! Hello world! Hello world! Hello world! Hello world!Hello world! Hello world! Hello world! Hello world! Hello world! Helloworld!";
// 背景颜色为红色
label.backgroundColor = [UIColor redColor];
// 设置字体颜色为白色
label.textColor = [UIColor whiteColor];
// 文字居中显示
label.textAlignment = UITextAlignmentCenter;
// 自动折行设置
label.lineBreakMode = UILineBreakModeWordWrap;
label.numberOfLines = 0;
 
10.代码生成Button
CGRect  frame =  CGRectMake ( 0 ,  400 ,  72.0 ,  37.0 );
UIButton  *button = [ UIButton   buttonWithType : UIButtonTypeRoundedRect ];
button. frame  = frame;
[button  setTitle : @" 新添加的按钮 "  forState:  UIControlStateNormal ];
button. backgroundColor  = [ UIColor   clearColor ];
button. tag  =  2000 ;
[button  addTarget : self   action : @selector (buttonClicked:)  forControlEvents :UIControlEventTouchUpInside ];
[ self . view   addSubview :button];
 
 
10.2在xib文件中已经创建好Button,通过tag获取按钮 
 
UIButton *testButton= (UIButton*)[self.view viewWithTag:100];
    [testButton addTarget:self action:@selector(test:) forControlEvents:UIControlEventTouchUpInside];
 
  //按钮事件
 
-(void) test: (id) sender{
    UIAlertView *av = [[[UIAlertView alloc] initWithTitle:@"ceshi" message:@"test11111" delegate:nil cancelButtonTitle:@"OK"otherButtonTitles:nil] autorelease];
    [av show];
}
 
11.让某个控件在View的中心位置显示:
(某个控件,比如 label , View ) label . center  =  self . view . center;
 
12.自定义text各种效果:
cell.backgroundColor = [UIColorscrollViewTexturedBackgroundColor];
// 设置文字的字体 
cell.textLabel.font = [UIFont fontWithName:@"AmericanTypewriter" size:100.0f];
// 设置文字的颜色 
cell.textLabel.textColor = [UIColor orangeColor];
// 设置文字的背景颜色 
cell.textLabel.shadowColor = [UIColor whiteColor];
// 设置文字的显示位置 
cell.textLabel.textAlignment = UITextAlignmentCenter;
 
13.隐藏statusBar: 
在程序的 viewDidLoad 中加入 
[[UIApplication sharedApplication]setStatusBarHidden:YES animated:NO];
 
14.更改AlertView背景:
UIAlertView *theAlert = [[[UIAlertViewalloc] initWithTitle:@"Atention" 
                                                     message: @"I'm a Chinese!" 
                                                    delegate:nil  
                                            cancelButtonTitle:@"Cancel"  
                                            otherButtonTitles:@"Okay",nil] autorelease]; 
   [theAlert show]; 
   UIImage *theImage = [UIImageimageNamed:@"loveChina.png"];    
   theImage = [theImage stretchableImageWithLeftCapWidth:0topCapHeight:0]; 
   CGSize theSize = [theAlert frame].size; 
    UIGraphicsBeginImageContext(theSize);     
   [theImage drawInRect:CGRectMake(5, 5, theSize.width-10, theSize.height-20)];// 这个地方的大小要自己调整,以适应 alertview 的背景颜色的大小。 
   theImage = UIGraphicsGetImageFromCurrentImageContext();    
UIGraphicsEndImageContext(); 
   theAlert.layer.contents = (id)[theImage CGImage];
 
 
15.键盘透明: 
textField.keyboardAppearance = UIKeyboardAppearanceAlert;
 
16.状态栏的网络活动风火轮是否旋转: 
[UIApplication sharedApplication].networkActivityIndicatorVisible , 默认值是 NO 。
 
17.截取屏幕图片: 
// 创建一个基于位 图的图形上下文并指定大小为CGSizeMake(200,400)
UIGraphicsBeginImageContext(CGSizeMake(200,400)); 
 
//renderInContext  呈现接受者及其子范围到 指定的上下文
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
    // 返回 一个基于当前图形上下文的图片
 UIImage *aImage = UIGraphicsGetImageFromCurrentImageContext();
  // 移除栈顶 的基于当前位图的图形上下文
UIGraphicsEndImageContext();
// 以 png 格式 返回指定图片的数据
imageData = UIImagePNGR epresentation(aImage);
 
18.更改cell选中的背景: 
    UIView *myview = [[UIView alloc] init];
    myview.frame = CGRectMake(0, 0, 320, 47);
    myview.backgroundColor = [UIColorcolorWithPatternImage:[UIImage imageNamed:@"0006.png"]];
    cell.selectedBackgroundView = myview;:
 
 
19.显示图片:
 
CGRect myImageRect = CGRectMake(0.0f, 0.0f, 320.0f, 109.0f); 
UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect];
[myImage setImage:[UIImage imageNamed:@"myImage.png"]]; 
myImage.opaque = YES; //opaque 是否透明
[self.view addSubview:myImage];
 
20.能让图片适应框的大小(beta)
NSString*imagePath = [[NSBundle mainBundle] pathForResource:@"XcodeCrash"ofType:@"png"];     
    UIImage *image = [[UIImage alloc]initWithContentsOfFile:imagePath]; 
        UIImage *newImage= [image transformWidth:80.f height:240.f]; 
    UIImageView *imageView = [[UIImageView alloc]initWithImage: newImage]; 
         [newImagerelease]; 
    [image release]; 
    [self.view addSubview:imageView];
 
21. 实现点击图片进行跳转的代码:(生成一个带有背景图片的button,给button绑定想要的事件)
UIButton *imgButton=[[UIButton alloc]initWithFrame:CGRectMake(0, 0, 120, 120)];
[imgButton setBackgroundImage:(UIImage *)[self.imgArray objectAtIndex:indexPath.row] forState:UIControlStateNormal];
imgButton.tag=[indexPath row];
[imgButton addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
 
22.键盘回收:
 
1).增加一个button,相应touch down事件,隐藏键盘。这种方法,太山寨了。为了相应一个事件增加一个button太不值得的。
 
.h
 
 
- (IBAction)dismissKeyBoard:(id)sender;
 
.m
 
- (IBAction)dismissKeyBoard:(id)sender {
 
    [testText resignFirstResponder];
 
}
 
 
2).第二种方法:在背景图片上添加Tap事件,相应单击处理。这种方法,很好代替了button方式,但是如果UI上没有背景图片,这种方法又回到到第一种山寨的方法行列中。
 
// 添加带有处理时间的背景图片
 
    UIImageView *backView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];
 
    backView.image = [UIImage imageNamed:@"small3.png"];
 
    
 
    backView.userInteractionEnabled = YES;
 
    UITapGestureRecognizer *singleTouch = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard:)];
 
    [backView addGestureRecognizer:singleTouch];
 
    
 
    backView.tag = 110;
 
    [self.view addSubview:backView];
 
 
-(void)dismissKeyboard:(id)sender{
 
    [text resignFirstResponder];
 
}
 
3).在xib文件中,修改xib文件的objects属性,默认是view属性,我们可以修改为UIControl属性,从而是xib文件相应touch down事件。这种方法,缺点就是没有xib就悲剧了。
.h
 
 
- (IBAction)dimissKeyboard:(id)sender;
 
.m
 
- (IBAction)dimissKeyboard:(id)sender {
 
    [text resignFirstResponder];
 
}
 
 
23、Gif图片的解析
 
  NSString *filePath = [[NSBundle mainBundle]pathForResource:@"bai3" ofType:@"gif"];
   NSData *data = [NSData dataWithContentsOfFile:filePath];
   CGImageSourceRef gif = CGImageSourceCreateWithData((CFDataRef)data, nil);
 //获取gif的各种属性
    CFDictionaryRef gifprops =(CGImageSourceCopyPropertiesAtIndex(gif,0,NULL));
    NSLog(@"_______%@",gifprops);
14
 
15
 
16
    NSInteger count =CGImageSourceGetCount(gif);
17
 
18
    NSLog(@"________%d",count);
19
 
20
 
21
   CFDictionaryRef gifDic = CFDictionaryGetValue(gifprops, kCGImagePropertyGIFDictionary);
22
 
23
 CFDictionaryRef delay = CFDictionaryGetValue(gifDic, kCGImagePropertyGIFDelayTime);
24
 
25
    NSLog(@"_______%@",delay);
26
 
27
 
28
 //[gifDic objectForKey:(NSString *)kCGImagePropertyGIFDelayTime];
29
 
30
    //    NSNumber * w = CFDictionaryGetValue(gifprops, @"PixelWidth");
31
 
32
    //    NSNumber * h =CFDictionaryGetValue(gifprops, @"PixelHeight");
33
 
34
    //    float totalDuration = delay.doubleValue * count;
35
 
36
    //    float pixelWidth = w.intValue;
37
 
38
    //    float pixelHeight = h.intValue;
39
 
40
  //将gif解析成UIImage类型对象,并加进images数组中 
41
 
42
 
43
    NSMutableArray *images = [NSMutableArray arrayWithCapacity:count];
44
 
45
    for(int index=0;index<count;index++)
46
 
47
    {
48
 
49
        CGImageRef ref = CGImageSourceCreateImageAtIndex(gif, index, nil);
50
 
51
        UIImage *img = [UIImage imageWithCGImage:ref];
52
 
53
        [images addObject:img];
54
 
55
        CFRelease(ref);
56
 
57
    }
58
 
59
    CFRelease(gifprops);
60
 
61
    CFRelease(gif);
    Gif的合成
01
- (void)exportAnimatedGif:(CGImageSourceRef )gif :(NSMutableArray *)images
02
 
03
{
04
 
05
       NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"animated.gif"];
06
 
07
    CGImageDestinationRef destination = CGImageDestinationCreateWithURL(( CFURLRef)[NSURL fileURLWithPath:path],
08
 
09
                                                                        kUTTypeGIF,
10
 
11
                                                                        images.count,
12
 
13
                                                                        NULL);
14
 
15
    UIImage *image;
16
 
17
    for (int i = 0; i<images.count; i++)
18
 
19
    {
20
 
21
        image = images[i];
22
 
23
        CFDictionaryRef gifprops =(CGImageSourceCopyPropertiesAtIndex(gif,i,NULL));
24
 
25
        CFDictionaryRef gifDic = CFDictionaryGetValue(gifprops, kCGImagePropertyGIFDictionary);
26
 
27
        NSNumber *delay = CFDictionaryGetValue(gifDic, kCGImagePropertyGIFDelayTime);
28
 
29
        NSDictionary *gifDelay = [NSDictionary dictionaryWithObject:[NSDictionary dictionaryWithObject:delay forKey:(NSString *)kCGImagePropertyGIFDelayTime]
30
 
31
                                                             forKey:(NSString *)kCGImagePropertyGIFDictionary];
32
 
33
         
34
 
35
        CGImageDestinationAddImage(destination,image.CGImage, (CFDictionaryRef)gifDelay);
36
 
37
        CGImageDestinationSetProperties(destination, ( CFDictionaryRef)gifprops);
38
 
39
    }
40
 
41
     
42
 
43
//    CGImageDestinationSetProperties(destination, ( CFDictionaryRef)gifprops);
44
 
45
    CGImageDestinationFinalize(destination);
46
 
47
    CFRelease(destination);
48
 
49
    NSLog(@"animated GIF file created at %@", path);
50
 
51
 
52
} 24.将一个UIView对象的内容保存为UIImage
 
01
+ (UIImage*)imageFromView:(UIView*)view{
02
 
03
UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, view.layer.contentsScale);
04
 
05
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
06
 
07
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
08
 
09
UIGraphicsEndImageContext();
10
 
11
return image;
12
 
13
}注意:生成的图片的scale和view的scale一致,这样才可以保证图片的效果和view显示的完全一致,使用renderInContext方法可以让subviews的内容也显示的图片里。
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 离婚了不给孩子生活费怎么办 点击爱奇艺系统提示停止运行怎么办 电视机图像颜色变了怎么办 10万签约被拒怎么办 钢琴弹奏中的折指怎么办! 吉他琴头旋钮将琴头扭坏了怎么办? 1岁幼儿不爱吃饭怎么办 3岁幼儿不爱吃饭怎么办 4岁幼儿不爱吃饭怎么办 买票买了点映 怎么办 一年级孩子注意力不集中怎么办 孩子上一年级注意力不集中怎么办 普宁二中初一新生住宿怎么办 小学入学普查错过了怎么办 初一的孩子不爱学习怎么办 初一孩子出现厌学情况怎么办 客人要求我们代办事项时怎么办 客人要求我们代办事项应该怎么办 想家了特别想哭怎么办 把友谊看得太重怎么办 高一新生数学差怎么办 如果好朋友觉得你成熟阴暗怎么办 被同学抓住把柄敲诈怎么办 初一学生字写的不好怎么办 初二学生字写不好怎么办 宝宝流鼻涕怎么办最简单方法 论文查重中参考文献重复率高怎么办 表格里一行字多怎么办 写作文没有拿稿纸怎么办? 纬创面试英语差怎么办 wifi只有两个人连很差怎么办 孩子写作文老是离体怎么办 高一语文阅读理解不好怎么办 80后90后中国怎么办 小学生毕业了班级家长微信群怎么办 ppt做了没保存怎么办 在中考中作文写在抄镐纸上怎么办 ppt格式刷隐藏了怎么办 ps卡住不动弹了怎么办 画图工具压缩完照片后有白边怎么办 穿滑校服就想自慰怎么办