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
];
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(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.鍵盤迴收: 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];
}
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<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的內容也顯示的圖片裏。