当前位置:首页>优优资讯 > 软件教程 > 电脑软件教程 > iOS开发中最有用关键的代码整合

iOS开发中最有用关键的代码整合

作者:本站整理 时间:2015-08-25


  本文整理了,在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(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图片的解析
 
  //加载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的合成
 
  - (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
 
  + (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的内容也显示的图片里。
 

相关文章

相关推荐

最新攻略

用户评论

(已有0条评论)
表情
注:您的评论需要经过审核才能显示哦,请文明发言!
还没有评论,快来抢沙发吧!