类似于这几张图片拼成一张大图的大图

【iOS开发-9】图片属性介绍,实现类似于“点击关注”的动画效果,以及顺便实现一个开始/停止按钮切换功能 - 推酷
【iOS开发-9】图片属性介绍,实现类似于“点击关注”的动画效果,以及顺便实现一个开始/停止按钮切换功能
(1)如果是按钮触发一个事件方法,我们只需要用(id)sender把控件对象传递进来,这个方法就能处理控件属性值;而如果方法需要处理其他对象,那么一个方法,就是把这个对象设置为全局变量,这样所有的方法都可以使用这个对象,并设置它的属性,我们这里的imgView2就是这样,可以在方法中,控制它停止还是开始。
(2)UIImage和UIImageView通常是一对,UIImage的对象只是把图片添加到程序里面,但它不是视图无法被加载显示在APP中,但是UIImageView是一个视图,可以把UIImage的对象初始化给UIImageView的对象,然后让这个UIImageView的对象被加载到视图中以显示出来。从我们最后用了[self.view addSubview:imgView1]可见,我们要加载的虽然是一个子视图,但子视图是视图。
(3)图片的内容模式是比较重要的,即把图片怎么放在UIImageView的frame框里,是剧中、靠左还是等比例缩放填满,还是不等比例只要填满即可。
(4)实现动画效果,其实就是弄一系列图片然后给UIImageView对象的动画图片属性,如本例中所示一般是吧图片装在数组中,然后再传递;传递后设置播放时间和次数等等,最后用startAnimating和stopAnimating等方法来控制是否播放,当然,要记得把这视图加载进来才能显示。
(5)复习了一遍UIButton的方法,即如何实现像播放器的“点暂停就变成播放,点播放就变成暂停”的按钮的样式。
* 发现在iOS7这些新版本中tintColor属性(设置 点击时 的按钮背景)失效了,所以为了点击时有点feeling,就用改变背景颜色的方法代替。
#import &ViewController.h&
@interface ViewController ()
@implementation ViewController
//为了在其他方法中调用这个对象,需要把它设置为全局变量,而不仅仅是在viewDidLoad中
UIImageView *imgView2;
- (void)viewDidLoad {
//UIImage实例化一个img1对象,并初始化一个图片给它,这步骤相当于把图片移动到应用程序里面
UIImage *img1=[UIImage imageNamed:@&logo.png&];
//然后UIImageView相当于一个载体,用来显示这个图片对象
//图片自己不能在程序中显示,需要一个载体,如之前讲UIButton时,图片就是借助按钮这个载体显示的
//所以UIImage的对象img1没有frame框架
//只有UIImageView的对象imgView1才有frame属性,它装着图片,然后我们对它位置大小进行设置即可
UIImageView *imgView1=[[UIImageView alloc]initWithImage:img1];
//意料之中:图片被自动缩放了,缩放到frame的大小
imgView1.frame=CGRectMake(30, 30, 300, 80);
//那如果需要原图小小呢?
//(1)如果知道原图宽高,直接把数字写进去
//(2)调用图片size里地宽高属性,如imgView1.frame=CGRectMake(30, 30, img1.size.width, img1.size.height)
//随之而来的时,如果我既想保持imgView1的宽高不变,又想图片不被缩放
//需要用到内容模式属性
//先弄个背景来做效果演示用
imgView1.backgroundColor=[UIColor redColor];
//尝试其中一个,发现居中了,而且图片没有被缩放了
//这个contentMode内容模式是UIView的方法,不仅仅是UIImage(继承自UIView)的方法,所以我们看它的类型前面有UIView,如UIViewContentModeCenter
// [imgView1 setContentMode:UIViewContentModeCenter];
//其他类型都是固定位置的,如上下左右左下右上等,下面几个是重点和常用的
//UIViewContentModeScaleToFill是填满,当然图片会被不等比例的缩放,和没有内容模式属性前一样
//UIViewContentModeScaleAspectFill是等比例缩放的填满,可以想象有一边长度正好,还有一边有可能超出了整个imgView1的frame边界
//UIViewContentModeScaleAspectFit是等比例缩放的填充到最大尺寸,可以想见有一边长度正好,还有一边有可能还没达到frame的边界
[imgView1 setContentMode:UIViewContentModeCenter];
[self.view addSubview:imgView1];
//设置动画
//先弄一个UIImageView准备加载,本来是UIImageView *imgView2=[[UIImageView alloc]init]但imgView2已在顶部声明为全局变量,此处只需初始化即可
imgView2=[[UIImageView alloc]init];
imgView2.frame=CGRectMake(30, 150, 40, 40);
//把需要动画的一系列图片导入到一个数组中,少的话就不需要用for循环导入
NSMutableArray *arr1=[[NSMutableArray alloc]init];
for (int i=1; i&=3; i++) {
UIImage *img2=[UIImage imageNamed:[NSString stringWithFormat:@&%i.png&,i]];
[arr1 addObject:img2];
//1、先把这个数组装到动画图片中
imgView2.animationImages=arr1;
//2、设置播放时间,即每次全部完全播放完的时间
imgView2.animationDuration=1;
//3、设置重复播放次数,如不设置或为0时,表示无限循环
imgView2.animationRepeatCount=0;
//4、还要启动,才能播放
[imgView2 startAnimating];
//当然还要加载进来才能显示
[self.view addSubview:imgView2];
//我们再增加一个按钮,来实现开始和停止功能
UIButton *btn1=[UIButton buttonWithType:UIButtonTypeCustom];
btn1.frame=CGRectMake(30, 250, 200, 30);
[btn1 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
btn1.backgroundColor=[UIColor grayColor];
btn1.showsTouchWhenHighlighted=YES;
[btn1 setTitle:@&停止& forState:UIControlStateNormal];
btn1.tag=1;
[btn1 addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn1];
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//按钮实现的是:点击停止,则按钮变成“开始”,背景绿色,然后动画停止。点击开始,按钮变成“停止”,背景灰色。
//这种按钮的功能其实就类似于播放/暂停键
-(void)btnClick:(id)sender{
UIButton *btn=(UIButton *)
if ((int)btn.tag==1) {
[btn setTitle:@&开始& forState:UIControlStateNormal];
btn.backgroundColor=[UIColor greenColor];
[imgView2 stopAnimating];
btn.tag=2;
[btn setTitle:@&停止& forState:UIControlStateNormal];
btn.backgroundColor=[UIColor grayColor];
[imgView2 startAnimating];
btn.tag=1;
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
静态效果:
动态效果:
已发表评论数()
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
排版有问题
没有分页内容
视频无法显示
图片无法显示您的举报已经提交成功,我们将尽快处理,谢谢!
系新浪微博的电话客服,向她说一下,看看有没有办法解决,新浪微博的客服电话400—096—0960或者400—098—0980都可以。
这个是你的系统只支持这样的格式啊
大家还关注
(window.slotbydup=window.slotbydup || []).push({
id: '2081942',
container: s,
size: '1000,60',
display: 'inlay-fix'打开微信“扫一扫”,分享到朋友圈
var initposts = [{"title":"\u770b\u\u5f20\u\uff0cGoogle\u4e5f\u80fd\u50cf\u4eba\u90a3\uc\u8ba4\u51fa\u201d\u\u4e0a\uc\u897f","imgurl":"http:\/\/\/wp-content\/uploads\/2.jpg","name":"cyzhou","cat":"\u77ed\u65b0\u95fb","caturl":"http:\/\/\/category\/news\/","wburl":"http:\/\/\/share\/share.php?appkey=&url=http:\/\/\/google-object-recognition\/&ralateUid=&title=\ub\u\u5f20\u\uff0cGoogle\u4e5f\u80fd\u50cf\u4eba\u90a3\uc\u8ba4\u51fa\u201d\u\u4e0a\uc\u897f\u3011&pic=http:\/\/\/wp-content\/uploads\/2.jpg","contenthtml":"\uc\u4f60\u7a81\u\u5728\u81ea\u5df1\u4fdd\u5b58\u\u\u7247\u91cc\u627e\u\u4e2d\u\u4e00\u5f20\uff0c\u4e00\u822c\u60c5\u51b5\u4e0b\u4f1a\u600e\u4e48\u505a\uff1f\u4f60\u53ef\u80fd\u77e5\u\u5f20\u\u\u662f\u4ec0\u4e48\u\uff0c\u\u4e2d\u\u4e48\u\uff0c\u4f46\u5c31\u662f\u60f3\u4e0d\u8d77\ue\u5230\u54ea\u4e2a\u\u5939\u91cc\u4e86\uc\u4e14\uf\u\u6570\u91cf\u592a\u591a\u7684\u8bdd\uff0c\u60f3\u627e\u\u5f20\u56fe\u\u771f\u5f97\u8d39\u4e00\u4f1a\u513f\u529f\u592b\u3002\n\uf\u80fd\u901a\u8fc7\u641c\u7d22\u\u4e2d\u67d0\u4e2a\u\u\u952e\u8bcd\ue\u\u5c31\u597d\u4e86\u3002\n\u5b9e\ua\u4ece\u53bb\u5e74\u5f00\u59cb\uff0c\u50cfGoogle+ Photos\uc\u7d22\u4e2d\u5c31\u5df2\u7ecf\u5f00\u59cb\u4f7f\u\u79cd\u7b80\u\u\u8bc6\u522b\uf\u4e86\uff0c\u540e\u6765Google Drive\uc\u7d22\u5f15\u64ce\u4e5f\u5f15\u\u7c7b\u4f3c\uf\u80fd\ua\u8fc7Google\u\u79cd\u81ea\u52a8\u6ce8\u89e3\uf\uff0c\u\u53ef\u4ee5\u901a\u8fc7\u\u4e2d\u67d0\u4e9b\u\u\u8bcd\u63cf\u8ff0\uc\u7d22\u\u5e94\u7684\u56fe\u\n\u867d\u7136\u50cf\u4eba\u\u522b\u8fd9\u\u56fe\u50cf\u8bc6\u522b\uf\u5df2\u7ecf\u\u5f88\u591a\u5e94\u7528\uff0c\u4f46\u\u522b\u51fa\u81ea\uc\u4e2d\u5404\u79cd\u\u\u4f53\u5c31\u6bd4\u4eba\u\u522b\u56f0\u96be\u591a\u4e86\uff0c\u5c24\uf\u5f53\u8fd9\u4e9b\u\u90fd\u8fd8\u\u5f20\u56fe\ud\u\u4eca\u5e74\u7684ImageNet\u\u6a21\u89c6\u89c9\u8bc6\u522b\u\u8d5b\u4e2d\uff0cGoogle\u\u652f\u56e2\u961f\u5c31\u4f7f\u\u4e0e\u4e4b\u76f8\u\uf\uff0c\u501f\u6b64\u6211\u4eec\u4e5f\u53ef\u4ee5\u770b\u770b\u4e00\u4e9b\u4e0e\u4e4b\u76f8\u\u7ec6\u\u\u\uff0c\u4e00\u5f20\u56fe\ud\u5f80\u5f80\u5b58\ud\u51e0\u79cd\u\uff0c\u53c2\u8d5b\uf\u52a9\u4e00\u4e9b\uf\u5219\u53ef\u4ee5\uc\u4e00\u5f20\u56fe\ud\u8bc6\u522b\u51fa\u4e0d\u540c\u\ub\u578b\uff0c\u6bd4\u\u5f20\u679c\u76d8\u56fe\u7247\u91cc\u653e\u\u51e0\u4e2a\u6a58\u5b50\u548c\u\u\u4e2a\u623f\u95f4\u56fe\u7247\u91cc\u\u89c6\u548c\u732b\u54aa\uff0c\u7b49\u7b49\u\u8fd9\u4e9b\u\u4e2d\uff0cGoogle\u53ef\u4ee5\u901a\u8fc7\uf\u624b\u6bb5\u8bc6\u522b\u51fa\u56fe\u50cf\u4e2d\u\u4f53\uff0c\u5e76\u8ba9\u\u53ef\u4ee5\u641c\u7d22\u5b83\u4eec\u3002\n\n\u4e5f\u8bb8\u4f60\u4f1a\u597d\u5947Google\u662f\u\u505a\u\uff0c\ue\u60f3\u8ba9\u\u53ef\u4ee5\u641c\u7d22\u5230\uff0c\u4f60\u5f53\u\u\u8bb0\u8fd9\u4e9b\u\uff0c\u4f46\u\u8bb0\u5b83\u4eec\u4e4b\u524d\uff0c\u4f60\u8fd8\u\u8ba9\u673a\u\u\u662f\u4ec0\u4e48\u624d\u53ef\u4ee5\u\ua\u4e86\u8ba9\u673a\u\u9053\u56fe\ud\u\u4f53\u662f\u4ec0\u4e48\uff0cGoogle\u751a\u81f3\u4e13\u95e8\u5f00\u53d1\u\u4e2a\u540d\u4e3aDistBelief\u7684\u57fa\u\u67b6\u\u\uff0cGoogle\u53ef\u4ee5\u8c03\u\ua\u4e07\u\u7b97\u673a\u96c6\u7fa4\uff0c\u4f7f\u\u5341\u4ebf\u\u91cf\ua\u\u6a21\u\u5ea6\u795e\u7ecf\u7f51\u7edc\u8bad\u7ec3\uff0c\u8fdb\u800c\u4e5f\u5c31\u80fd\u6bd4\u5bf9\u5927\u91cf\u56fe\ud\u\u4f3c\u\uff0c\u4e3a\u5b83\u4eec\ua\ue\u\u679c\u8fd9\u4e2a\u7cfb\u7edf\u518d\u63a5\u53d7\u\u4f3c\u\u7684\u56fe\u50cf\u4fe1\u606f\uff0c\u7cfb\u7edf\u5c31\u4f1a\u68c0\u6d4b\u\u4e0e\u6b64\u524d\u88ab\ua\ue\u\u4e9b\u\u662f\u76f8\u4f3c\u\u\u5e03\u5f0f\u8ba1\u7b97\u548c\u5feb\u901f\u8fed\u4ee3\ua\ub\uff0cGoogle\u53ef\u4ee5\u628a\u8bad\u7ec3\u6df1\u5ea6\u7f51\u7edc\u\u6a21\u63d0\u\u4ee5\u524d\u5b66\u672f\u62a5\ud\u7406\u8bba\u503c\u0d\u4ee5\u4e0a\uff0c\u8fd9\u5c31\u8ba9\u5b83\u53ef\u4ee5\u4e3b\u52a8\u201c\u8ba4\u8bc6\u201d\u67d0\u4e2a\u\u\u5c31\u50cf\u4eba\u\u522b\u67d0\u4e2a\u\u90a3\u\u4f5c\u\u8fd9\u79cd\u201c\u4e3b\u52a8\u5b66\u4e60\u201d\u7684\u57fa\ua\uff0c\u5c31\u53ef\u4ee5\u8fbe\u\u\u4e2a\ue\u8bcd\ua\u\u80fd\u8bc6\u522b\u51fa\u56fe\u50cf\u4e2d\u\u7684\u76ee\u\n\ua\u6765\uff0c\u5728Google\u5bf9\u8fd9\u\u672f\u\u4e4b\u540e\uff0c\u6211\u4eec\u8fd8\u6709\u53ef\u80fd\u770b\u\u8fd0\uGoogle\u56fe\u50cf\u641c\u7d22\u3001YouTube\u3001\u81ea\u52a8\u9a7e\u9a76\u6c7d\u8f66\u7b49\u\u5e94\ua\u666f\u4e2d\ub\u4e4b\uff0c\u5b83\u53ef\u4ee5\u88ab\u8fd0\u\u4efb\u4f55\u\u201c\u\u201d\u\u\u65b9\u3002\n\u56fe\u\u81ea\uff1aBlogspot\n","gtime":"","taghtml":"}

我要回帖

更多关于 很多照片拼成一张大图 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信