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.顯示圖片: app

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.鍵盤迴收: ide

1).增長一個button,相應touch down事件,隱藏鍵盤。這種方法,太山寨了。爲了相應一個事件增長一個button太不值得的。 post

.h 測試

- (IBAction)dismissKeyBoard:(id)sender; 字體

.m

- (IBAction)dismissKeyBoard:(id)sender { this

    [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圖片的解析

//加載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);


    NSInteger count =CGImageSourceGetCount(gif);

    NSLog(@"________%d",count);


   CFDictionaryRef gifDic = CFDictionaryGetValue(gifprops, kCGImagePropertyGIFDictionary);

 CFDictionaryRef delay = CFDictionaryGetValue(gifDic, kCGImagePropertyGIFDelayTime);

    NSLog(@"_______%@",delay); 


 //[gifDic objectForKey:(NSString *)kCGImagePropertyGIFDelayTime];

    //    NSNumber * w = CFDictionaryGetValue(gifprops, @"PixelWidth");

    //    NSNumber * h =CFDictionaryGetValue(gifprops, @"PixelHeight");

    //    float totalDuration = delay.doubleValue * count;

    //    float pixelWidth = w.intValue;

    //    float pixelHeight = h.intValue;

  //將gif解析成UIImage類型對象,並加進images數組中  


    NSMutableArray *images = [NSMutableArray arrayWithCapacity:count];

    for(int index=0;index<count;index++)

    {

        CGImageRef ref = CGImageSourceCreateImageAtIndex(gif, index, nil);

        UIImage *img = [UIImage imageWithCGImage:ref];

        [images addObject:img];

        CFRelease(ref);

    }

    CFRelease(gifprops);

    CFRelease(gif);

    Gif的合成

- (void)exportAnimatedGif:(CGImageSourceRef )gif :(NSMutableArray *)images

{

       NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"animated.gif"];

    CGImageDestinationRef destination = CGImageDestinationCreateWithURL(( CFURLRef)[NSURL fileURLWithPath:path],

                                                                        kUTTypeGIF,

                                                                        images.count,

                                                                        NULL);

    UIImage *image;

    for (int i = 0; i<images.count; i++)

    {

        image = images[i];

        CFDictionaryRef gifprops =(CGImageSourceCopyPropertiesAtIndex(gif,i,NULL));

        CFDictionaryRef gifDic = CFDictionaryGetValue(gifprops, kCGImagePropertyGIFDictionary);

        NSNumber *delay = CFDictionaryGetValue(gifDic, kCGImagePropertyGIFDelayTime);

        NSDictionary *gifDelay = [NSDictionary dictionaryWithObject:[NSDictionary dictionaryWithObject:delay forKey:(NSString *)kCGImagePropertyGIFDelayTime]

                                                             forKey:(NSString *)kCGImagePropertyGIFDictionary];

        

        CGImageDestinationAddImage(destination,image.CGImage, (CFDictionaryRef)gifDelay);

        CGImageDestinationSetProperties(destination, ( CFDictionaryRef)gifprops);

    }

    

//    CGImageDestinationSetProperties(destination, ( CFDictionaryRef)gifprops);

    CGImageDestinationFinalize(destination);

    CFRelease(destination);

    NSLog(@"animated GIF file created at %@", path);


}
24.將一個UIView對象的內容保存爲UIImage
+ (UIImage*)imageFromView:(UIView*)view{

UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, view.layer.contentsScale);

[view.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return image;

}
注意:生成的圖片的scale和view的scale一致,這樣才能夠保證圖片的效果和view顯示的徹底一致,使用renderInContext方法能夠讓subviews的內容也顯示的圖片裏。
相關文章
相關標籤/搜索