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

来源:互联网 发布:视频面试软件 编辑:程序博客网 时间:2024/06/10 07:40

动态添加一张图片

    首先要先说明的是:在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