iOS开发中最有用关键的代码整合
iOS开发中最有用关键的代码整合
发布时间:2016-02-29 来源:查字典编辑
摘要:1.判断邮箱格式是否正确的代码://利用正则表达式验证-(BOOL)isValidateEmail:(NSString*)email{NSS...

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 = @"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 : @"rn--%@rn" ,boundary] dataUsingEncoding : NSUTF8StringEncoding ]];

[body appendData :[[ NSString stringWithString : @"Content-Disposition:form-data; name="userfile"; filename="2.png"rn" ] dataUsingEncoding : NSUTF8StringEncoding ]]; // 上传上去的图片名字 [body appendData :[[ NSString stringWithString : @"Content-Type: application/octet-streamrnrn" ] dataUsingEncoding : NSUTF8StringEncoding ]];

[body appendData :[ NSData dataWithData :imageData]];

[body appendData :[[ NSString stringWithFormat : @"rn--%@--rn" ,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();

yer.contents = (id)[theImage CGImage];

15.键盘透明:

textField.keyboardAppearance = UIKeyboardAppearanceAlert;

16.状态栏的网络活动风火轮是否旋转:

[UIApplication sharedApplication].networkActivityIndicatorVisible , 默认值是 NO 。

17.截取屏幕图片:

// 创建一个基于位 图的图形上下文并指定大小为CGSizeMake(200,400)

UIGraphicsBeginImageContext(CGSizeMake(200,400));

//renderInContext 呈现接受者及其子范围到 指定的上下文

[yer 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, yer.contentsScale);

04

05 [yer renderInContext:UIGraphicsGetCurrentContext()];

06

07 UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

08

09 UIGraphicsEndImageContext();

10

11 return image;

12

13 }

注意:生成的图片的scale和view的scale一致,这样才可以保证图片的效果和view显示的完全一致,使用renderInContext方法可以让subviews的内容也显示的图片里。

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新IOS开发学习
热门IOS开发学习
编程开发子分类