iOS開發中一些有用的小代碼

來源:互聯網
上載者:User

1.判斷郵箱格式是否正確的代碼:// 利用Regex驗證-( 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 contextUIGraphicsBeginImageContext (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 contextUIImage * newImage =  UIGraphicsGetImageFromCurrentImageContext ();// End the contextUIGraphicsEndImageContext ();// 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 urlNSString  *urlString =  @"http://192.168.1.113:8090/text/UploadServlet" ;// 伺服器位址// setting up the request object nowNSMutableURLRequest  *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.跳到下個ViewnextWebView  = [[ 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.代碼產生ButtonCGRect  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圖片的解析 01//載入gif02 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 *)images02 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 03UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, view.layer.contentsScale);04 05[view.layer renderInContext:UIGraphicsGetCurrentContext()];06 07UIImage *image = UIGraphicsGetImageFromCurrentImageContext();08 09UIGraphicsEndImageContext();10 11return image;12 13}注意:產生的圖片的scale和view的scale一致,這樣才可以保證圖片的效果和view顯示的完全一致,使用renderInContext方法可以讓subviews的內容也顯示的圖片裡。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.