iOS開發中最有用關鍵的代碼整合
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 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
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
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的內容也顯示的圖片裡。