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

IOS系列——添加image图片和对图片添加事件响应

2013-09-14 18:23 274 查看
动态添加一张图片

首先要先说明的是:在IOS程序中。如果要读取图片。在程序中如果没有资源后缀名称,默认为png,也就是说,如果资源图片是png ,我们后缀可以不写,如果资源图片不是png格式,我们在程序中必须要加上后缀名称

第一种:直接添加本地图片

1.直接读取

UIImageView *image =[[UIImageView alloc] initWithFrame:CGRectMake(1, 1, 100, 100)];
[image setImage:[UIImage imageNamed:@"按钮"]];
[self.view addSubview:image];
[image release];

这种方法存在的问题是:这样读取的图片会一直放在缓存里面,直到程序关闭

2.路径读取
NSString *path = [[NSBundle mainBundle] pathForResource:@"按钮" ofType:@"png"];
NSData *data = [NSData dataWithContentsOfFile:path];
UIImageView *image =[[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
[image setImage:[UIImage imageWithData:data]];
[self.view addSubview:image];

这种方法的好处是,直接读取文件,而不用把文件放在内存里面去,问题是:如果图片文件过大或者说事高清图(x2)这样的,可能会读取不了

可以参考下面的方法

// 会缓存图片

UIImageView *wallpaper = [[UIImageView alloc] initWithImage:

wallpaper = [UIImage imageNamed:@"icon.png"]];

// 不会缓存图片

UIImageView *wallpaper = [[UIImageView alloc] initWithImage:

wallpaper = [UIImage imageWithContentsOfFile:@"icon.png"]];

对图片添加事件响应

有时候我们对图片添加了之后,还需要对图片添加事件响应,不过对于图片本身来讲,是不支持事件相应的,我们需要借助手势来满足这个需求 UITapGestureRecognizer

如果收每个图片直接响应一个方法,就可以直接用UITapGestureRecognizer

但是,如果很多图片的事件响应都要响应同一个方法 我们需要像button一样添加tag来决定不同的行为,但是对于UITapGestureRecognizer这个类本身是不带这样的属性的,所以我们可以自定义一个类并且添加一个int属性

自定义一个类,比如说 MyTapGesture 来继承UITapGestureRecognizer 添加的属性为 int 类型的 tag,具体代码为在自定义 MyTapGesture类 .h 文件中添加一行代码就可以了

@property(assign,nonatomic) int tag;


要对图片事件响应,在这个文件中导入头文件 #import "MyTapGesture.h"

下面来实现图片的事件响应,其实也非常简单,只需要几行代码就搞定

MyTapGesture *tapGesture = [[MyTapGesture alloc] init];     //对手势开辟空间
[image addGestureRecognizer:tapGesture];                    //对图片添加手势
tapGesture.tag = 1;                                         //设置手势tag
[tapGesture addTarget:self action:@selector(change:)];      //设置手势响应方法
image.userInteractionEnabled = YES;


下面的是看到别人的文件 地址http://blog.sina.com.cn/s/blog_45e2b66c010116da.html 还没搞明白,暂时先收着,以后看

两个view设置阴影的效果:注意是view1添加到view2,不要反了

UIView*view1=[[UIViewalloc]init];

UIView*view2=[[UIViewalloc]init];

view1.layer.cornerRadius=5.0;

view1.layer.masksToBounds=YES;

view2.layer.cornerRadius=5.0;

view2.layer.shadowColor=[[UIColorblackColor]CGColor];

view2.layer.shadowOpacity=1.0;

view2.layer.shadowRadius=10.0;

view2.layer.shadowOffset=CGSizeMake(0.0f,0.0f);

[view2 addSubview:view1];

[view1 release];
http://www.2cto.com/kf/201112/112730.html http://nachbaur.com/blog/fun-shadow-effects-using-custom-calayer-shadowpaths
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐