您的位置:首页 > 移动开发 > IOS开发

iOS开发中一些实用小代码(持续更新-2016年11月7日)

2016-11-07 17:40 579 查看
声明:原文地址:http://mobile.51cto.com/iphone-387111.htm

本文介绍了一些实际开发过程中的简单的小功能代码,也可以说是iOS开发中一些实用小代码。本人在前人整理的基础上补充了一点

下面开始按功能介绍iOS开发中一些实用小代码。

目录

目录

判断邮箱格式是否正确的代码

图片压缩

亲测可用的图片上传代码

给imageView加载图片

对图库的操作

跳到下个View

创建一个UIBarButton右边按钮

设置navigationBar隐藏

设置bottombar隐藏补充

UIlabel多行文字自动换行 自动折行

代码生成Button

让某个控件在View的中心位置显示

自定义cell中text各种效果

隐藏statusBar

更改AlertView背景

键盘透明

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

截取屏幕图片

更改cell选中的背景

显示图片

能让图片适应框的大小beta

实现点击图片进行跳转的代码生成一个带有背景图片的button给button绑定想要的事件

键盘回收

上面第九个和下面都是我补充的内容

隐藏状态栏电池信号运营商等

禁止横屏

26设置启动界面停留时间

URL encode编码和解码

目录

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];


注意: 对于有navigation导航栏的跳转方式,可以用[self.navigationController pushViewController:[[SecondViewController alloc]init] animated:YES]; 参看:UINavigation的一些常用用法

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.设置bottombar隐藏【补充】

页面跳转后消失,返回上级页面出现:

-(BOOL)hidesBottomBarWhenPushed
{
return YES;
}


注意: -(BOOL)hidesBottomBarWhenPushed

{

return YES;

}

改成:

self.navigationController.hidesBottomBarWhenPushed = YES;

则,底部bottombar无论如何也不会消失

若改成:

self.tabBarController.tabBar.hidden = YES;

则,底部bottombar将在页面跳转后永远消失,即使返回上级页面也不会出现

10.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;


补充: 详细参看:UILabel中文本排布的一些常见写法

11.代码生成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];


12.让某个控件在View的中心位置显示:

label.center = self.view.center;//(某个控件,比如label,View)


13.自定义cell中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;


14.隐藏statusBar:

在程序的viewDidLoad中加入

[[UIApplication sharedApplication]setStatusBarHidden:YES animated:NO];


15.更改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];


16.键盘透明:

textField.keyboardAppearance = UIKeyboardAppearanceAlert;


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

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES ; //默认值是NO。


18.截取屏幕图片:

//创建一个基于位图的图形上下文并指定大小为CGSizeMake(200,400)
UIGraphicsBeginImageContext(CGSizeMake(200,400));
//renderInContext 呈现接受者及其子范围到指定的上下文
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
//返回一个基于当前图形上下文的图片
UIImage *aImage = UIGraphicsGetImageFromCurrentImageContext();
//移除栈顶的基于当前位图的图形上下文
UIGraphicsEndImageContext();
//以png格式返回指定图片的数据
imageData = UIImagePNGRepresentation(aImage);


19.更改cell选中的背景:

UIView *myview = [[UIView alloc] init];
myview.frame = CGRectMake(0, 0, 320, 47);
myview.backgroundColor = [UIColorcolorWithPatternImage:[UIImage imageNamed:@"0006.png"]];
cell.selectedBackgroundView = myview;


20.显示图片:

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];


21.能让图片适应框的大小(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];


22.实现点击图片进行跳转的代码:(生成一个带有背景图片的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];


23.键盘回收:

-(IBAction)textFieldDoneEditing:(id)sender{
[sender resighFirstRespond];
}


通过点击背景回收键盘:(两个都得添加)

-(IBAction)textFieldDoneEditing:(id)sender{
[sender resighFirstRespond];
}
-(IBAction)backgroundTapped:(id)sender{
[nameField resignFirstRespond];
[numberField resignFirstRespond];
}


补充:详细参看:IOS点击键盘以外空白区域隐藏键盘的3种常见写法

上面第九个和下面都是我补充的内容:

24.隐藏状态栏(电池,信号,运营商等)

在APPDelegate.m中添加

-(BOOL)prefersStatusBarHidden
{
return YES;
}


25.禁止横屏

在APPDelegate.m中添加:

-(NSInteger)application:(UIApplication * )application supportedInterfaceOrientationsForWindow:(nullable UIWindow *)window
{
return UIInterfaceOrientationMaskPortrait;
}


26设置启动界面停留时间

在APPDelegate.m中第一个方法中添加如下代码:

[NSThread sleepForTimeInterval:3];


注意:其中,sleepForTimeInterval:后面的参数单位是秒,数值大小大于0。

具体参看:IOS中如何设置启动界面的停留时间

27.URL encode编码和解码

+(NSString *)encodeString:(NSString *)unencodeString
{
NSString * encodedString = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)unencodeString, NULL, (CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingUTF8));
return unencodeString;
}

-(NSString *)decodeString:(NSString *)encodedString
{
NSString * decodedString = (__bridge_transfer NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL, (__bridge CFStringRef)encodedString, CFSTR(""),CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
return encodedString;
}


附:URL在线解析: UrlEncode编码/UrlDecode解码 - 站长工具

目录

目录

判断邮箱格式是否正确的代码

图片压缩

亲测可用的图片上传代码

给imageView加载图片

对图库的操作

跳到下个View

创建一个UIBarButton右边按钮

设置navigationBar隐藏

设置bottombar隐藏补充

UIlabel多行文字自动换行 自动折行

代码生成Button

让某个控件在View的中心位置显示

自定义cell中text各种效果

隐藏statusBar

更改AlertView背景

键盘透明

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

截取屏幕图片

更改cell选中的背景

显示图片

能让图片适应框的大小beta

实现点击图片进行跳转的代码生成一个带有背景图片的button给button绑定想要的事件

键盘回收

上面第九个和下面都是我补充的内容

隐藏状态栏电池信号运营商等

禁止横屏

26设置启动界面停留时间

URL encode编码和解码

目录
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息