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

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;
}
 
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(00120120)];
[imgButton setBackgroundImage:(UIImage *)[self.imgArray objectAtIndex:indexPath.rowforState: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];

}


23Gif图片的解析

01 //加载gif
02  
03   NSString *filePath = [[NSBundle mainBundle]pathForResource:@"bai3" ofType:@"gif"];
04  
05     NSData *data = [NSData dataWithContentsOfFile:filePath];
06  
07     CGImageSourceRef gif = CGImageSourceCreateWithData((CFDataRef)data, nil);
08  
09  //获取gif的各种属性
10  
11     CFDictionaryRef gifprops =(CGImageSourceCopyPropertiesAtIndex(gif,0,NULL));
12  
13     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
view source
print ?
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的内容也显示的图片里。



你可能感兴趣的:(iOS开发中一些有用的小代码)