动态添加一张图片
首先要先说明的是:在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];
这种方法存在的问题是:这样读取的图片会一直放在缓存里面,直到程序关闭
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