iOS 常用代码块
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的中心位置显示:
// 设置文字的字体
cell.textLabel.font = [UIFont fontWithName:@"AmericanTypewriter" size:100.0f];
// 设置文字的颜色
cell.textLabel.textColor = [UIColor orangeColor];
// 设置文字的背景颜色
cell.textLabel.shadowColor = [UIColor whiteColor];
// 设置文字的显示位置
cell.textLabel.textAlignment = UITextAlignmentCenter;
在程序的 viewDidLoad 中加入
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];
textField.keyboardAppearance = UIKeyboardAppearanceAlert;
16.状态栏的网络活动风火轮是否旋转:
[UIApplication sharedApplication].networkActivityIndicatorVisible , 默认值是 NO 。
// 创建一个基于位 图的图形上下文并指定大小为CGSizeMake(200,400)
UIGraphicsBeginImageContext(CGSizeMake(200,400));
//renderInContext 呈现接受者及其子范围到 指定的上下文
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
// 返回 一个基于当前图形上下文的图片
UIImage *aImage = UIGraphicsGetImageFromCurrentImageContext();
// 移除栈顶 的基于当前位图的图形上下文
UIGraphicsEndImageContext();
// 以 png 格式 返回指定图片的数据
imageData = UIImagePNGR epresentation(aImage);
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];
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.键盘回收:
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<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的内容也显示的图片里。
25.捕捉屏幕截图
CALayer实例使用Core Graphics的renderInContext方法可以将视图绘制到图像上下文中以便转化为其他UIImage实例。前提先#import <QuartzCore/QuartzCore.h>
+ (UIImage *) imageFromView: (UIView *)theView {
// draw a view's contents into an image context
UIGraphicsBeginImageContext(theView.frame.size);
CGContextRef context = UIGraphicsGetCurrentContext(); [theView.layer renderInContext:context];
UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return theImage;
}
注:UIGraphicsBeginImageContext(CGSize size)创建一个基于位图的上下文(context),并将其设置为当前上下文。函数功能与UIGraphicsBeginImageContextWithOptions相同,相当于该方法的opaque参数为NO,scale因子为1.0。而UIGraphicsEndImageContext()方法是移除栈顶的基于当前位图的图形上下文。
26.捕捉截取某个区域内屏幕图像
- (UIImage *)imageFromView: (UIView *) theView atFrame:(CGRect)rect
{
UIGraphicsBeginImageContext(theView.frame.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
UIRectClip(rect);
[theView.layer renderInContext:context];
UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext(); return theImage;//[self getImageAreaFromImage:theImage atFrame:rect];
}
27.从某图片中截图
UIImage *image = [[UIImage alloc] initWithData:data];//大图
CGRect imageRect = CGRectMake(0.0, 0.0, image.size.width, image.size.height);
CGSize itemSize = CGSizeMake(w,h);
UIGraphicsBeginImageContext(itemSize);
[image drawInRect:imageRect];
UIImage *smallimage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
28.视图添加倒影效果
const CGFloat kReflectPercent = -0.25f;
const CGFloat kReflectOpacity = 0.3f;
const CGFloat kReflectDistance = 10.0f; + (void)addSimpleReflectionToView:(UIView *)theView
{
CALayer *reflectionLayer = [CALayer layer];
reflectionLayer.contents = [theView layer].contents;
reflectionLayer.opacity = kReflectOpacity;
reflectionLayer.frame = CGRectMake(0.0f,0.0f,theView.frame.size.width,theView.frame.size.height*kReflectPercent); //倒影层框架设置,其中高度是原视图的百分比
CATransform3D stransform = CATransform3DMakeScale(1.0f,-1.0f,1.0f);
CATransform3D transform = CATransform3DTranslate(stransform,0.0f,-(kReflectDistance + theView.frame.size.height),0.0f);
reflectionLayer.transform = transform;
reflectionLayer.sublayerTransform = reflectionLayer.transform;
[[theView layer] addSublayer:reflectionLayer];
}
另一:使用Core Graphics创建倒影
+ (CGImageRef) createGradientImage:(CGSize)size
{
CGFloat colors[] = {0.0,1.0,1.0,1.0};
//在灰色设备色彩上建立一渐变
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
CGContextRef context = CGBitmapContextCreate(nil,size.width,size.height,8,0,colorSpace,kCGImageAlphaNone);
CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace,colors,NULL,2);
CGColorSpaceRelease(colorSpace); //绘制线性渐变
CGPoint p1 = CGPointZero;
CGPoint p2 = CGPointMake(0,size.height);
CGContextDrawLinearGradient(context,gradient,p1,p2,kCGGradientDrawsAfterEndLocation); //Return the CGImage
CGImageRef theCGImage = CGBitmapContextCreateImage(context);
CFRelease(gradient);
CGContextRelease(context);
return theCGImage;
}
//Create a shrunken frame for the reflection
+ (UIImage *) reflectionOfView:(UIView *)theView WithPercent:(CGFloat) percent
{
//Retain the width but shrink the height
CGSize size = CGSizeMake(theView.frame.size.width, theView.frame.size.height * percent); //Shrink the View
UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
[theView.layer renderInContext:context];
UIImage *partialimg = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext(); //build the mask
CGImageRef mask = [ImageHelper createGradientImage:size];
CGImageRef ref = CGImageCreateWithMask(partialimg.CGImage,mask);
UIImage *theImage = [UIImage imageWithCGImage:ref];
CGImageRelease(ref);
CGImageRelease(mask);
return theImage;
} const CGFloat kReflectDistance = 10.0f;
+ (void) addReflectionToView: (UIView *)theView
{
theView.clipsToBounds = NO;
UIImageView *reflection = [[UIImageView alloc] initWithImage:[ImageHelper reflectionOfView:theView withPercent:0.45f]];
CGRect frame = reflection.frame;
frame.origin = CGPointMake(0.0f, theView.frame.size.height + kReflectDistance);
reflection.frame = frame; // add the reflection as a simple subview
[theView addSubView:reflection];
[reflection release];
}
29.实现圆角图片:
UIColor *color = [UIColor colorWithRed:0.95 green:0.95 blue:0.95 alpha:0];
[aImage setBackgroundColor:color]; //设置背景透明 /******设置图片圆角begin*******/
aImage.layer.masksToBounds = YES;
aImage.layer.cornerRadius = 5.0;
aImage.layer.borderWidth = 0.5;
aImage.layer.borderColor = [[UIColor grayColor] CGColor];
/******设置图片圆角end********/
另有方法可见:http://www.4ucode.com/Study/Topic/2058289转载文章。
30.实现iPhone图标的水晶立体效果
- (void)viewDidLoad {
[super viewDidLoad];
UIGraphicsBeginImageContext(icon.bounds.size);
CGContextRef ctx = UIGraphicsGetCurrentContext();
const CGFloat components[4] = {0.0,0.4,0.0,1.0};
CGContextSetFillColor(ctx, components);
CGContextFillRect(ctx, CGRectMake(0, 0, icon.bounds.size.width, icon.bounds.size.height));
UIImage *background = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImage *image = [UIImage imageNamed:@"icon.png"];
UIImage *mask = [UIImage imageNamed:@"IconBase.png"];
UIImage *roundCorner = [UIImage imageNamed:@"round-corner.png"];
icon.image = image;
CALayer* subLayer = [[CALayer layer] retain];
subLayer.frame = icon.bounds;
subLayer.contents = (id)[background CGImage];
CALayer* maskLayer = [[CALayer layer] retain];
maskLayer.frame = icon.bounds;
maskLayer.contents = (id)[mask CGImage];
[subLayer setMask:maskLayer];
[[icon layer] addSublayer:subLayer];
CALayer* roundCornerLayer = [[CALayer layer] retain];
roundCornerLayer.frame = icon.bounds;
roundCornerLayer.contents = (id)[roundCorner CGImage];
[[icon layer] setMask:roundCornerLayer];
[maskLayer release];
[subLayer release];
[roundCornerLayer release];
}
31.两图合成一图
- (UIImage*)addImage:(UIImage *)image1 toImage:(UIImage*)image2
{
UIGraphicsBeginImageContext(image1.size); [image1 drawInRect:CGRectMake(0,0,image1.size.width,image1.size.height)];
[image2 drawInRect:CGRectMake(0,0,image2.size.width,image2.size.height)]; UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resultingImage;
}
参考链接
1.http://www.cnblogs.com/lovecode/archive/2011/11/12/2246421.html
2.http://my.oschina.net/u/819843/blog/98574
iOS 常用代码块的更多相关文章
- vs2015常用代码块与自定义代码块
常用代码块 代码段名 描 述 #if 该代码段用#if和#endif命令围绕代码 #region 该代码段用#region和#endregion命令围绕代码 ~ 该代码段插入一个析构函数 att ...
- 关于Hbuild引用mui常用代码块以及部分控件.
MUI-最接近原生APP体验的高性能前端框架, 追求性能体验,是我们开始启动MUI项目的首要目标,轻量必然是重要特征: MUI不依赖任何第三方JS库,压缩后的JS和CSS文件仅有100+K和60+K, ...
- IOS常用代码整理
常用代码整理: 12.判断邮箱格式是否正确的代码: //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRege ...
- iOS:自定义代码块{ }
1.Xcode本身带有编码常用的代码块可供使用,如下图 调用方法: (1)直接拖到代码区域中: (2)使用快捷键,键入 “while”, Xcode就会出现自动完成的提示 也可以自定义自己常用的代码块 ...
- IOS Block代码块的定义与使用
代码块的本质是和其他的变量类似,不同的是,代码块存储的数据是一个函数体.使用代码块,你可以像调用其他标准函数一样的调用,可以传入参数,并得到返回值. 脱字符是代码块的语法标记.下图表示代码块的 ...
- ios 显示代码块(show the code snippet library)
在项目的实际开发中,我们会重复的书写很多的代码,我经常是需要用到某一个功能,就从以前的项目中复制粘贴过来,很是麻烦 下面就为大家提供两种不错的方法, 一.宏定义,这个大家应该很熟悉,在这里就不做多的介 ...
- iOS:Xcode代码块,提升敲代码的效率
一.代码块在哪里? 看下图 或者 快捷键:command+shift+L 长这样: 二.如何创建代码块: 1.先选中要创建的代码片段,然后点击右键,选中 Create Code Snippet 然后会 ...
- iOS开发常用代码块(第二弹)
GCD定时器 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, ); dispat ...
- iOS开发常用代码块
遍历可变数组的同时删除数组元素 NSMutableArray *copyArray = [NSMutableArray arrayWithArray:array]; NSString *str1 = ...
随机推荐
- B树(B-树)
1.什么是B树(B-树)? B树是一种m阶树,m>=2 性质: 1)树中每个结点至多m个孩子: 2)对于根结点,子树个树取值范围为[2,m],关键字个数范围[1,m-1]: 3)对于非根非叶结点 ...
- Binary Trees
1. Definiation What is Binary Trees? Collection of node (n>=0) and in which no node can have more ...
- ubuntu 调试库
.安装带有调试信息的libc: sudo apt-get install libc6-dbg .下载libc源码 a.选定一个放置源码的目录并进入,如 /home/kent/dev-os/libc6- ...
- Windows系统新建gitignore文件出现“必须键入文件名”错误的解决办法
今天打算把本地的项目用git推送到github上去,但是有的信息我又不想把它加入到版本控制系统中去,例如.classpath文件和.class文件等等,这个时候我就想到了使用.gitignore文件把 ...
- [转]整理jquery开发技巧
1.创建一个嵌套的过滤器 1.$(jquery).filter(":not(:has(.selected))") //去掉所有不包含class为.selected的元素 2.使 ...
- TortoiseGit - Win7使用Gitblit搭建Git服务器教程
第一步:下载Java并且安装 第二步:配置Java环境变量环境变量 --> 系统变量1新建:变量名:JAVA_HOME变量值:D:\Program Files (x86)\Java\jdk1.6 ...
- TFS 2012使用简介
为什么使用TFS 2012进行源代码管理——TFS 2012使用简介(一) 来源:雪雁 http://www.cnblogs.com/codelove/archive/2013/03/16/2963 ...
- PHP 流程
登录页面 <body> <form action="loginchuli.php" method="post"> <div> ...
- __doPostBack初识
周五在公司看到有看到Request.Params["__EVENTARGUMENT"]的代码不解,不解遂上网查找,发现一篇文章<Understanding the JavaS ...
- php 生成json格式的数据
放到引入的公共函数里边 if (!function_exists('format_json')) { /** * 格式化API输出的json * @param $return_code string ...