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=[[UIButtonalloc]initWithFrame:CGRectMake(0,0,120,120)];

[imgButtonsetBackgroundImage:(UIImage*)[self.imgArrayobjectAtIndex:indexPath.row]forState:UIControlStateNormal];

imgButton.tag=[indexPathrow];

[imgButtonaddTarget:selfaction:@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

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

{

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

{

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的内容也显示的图片里。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐