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图片的解析
01
//加载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的合成
01
- (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
01
+ (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的内容也显示的图片里。