当前位置: 编程技术>移动开发
本页文章导读:
▪说说日前体会 说说最近体会
这一个月每日每夜的写代码,却总感觉没有人家那么那般行云流水的感觉。后来经过自己几次吐血的经历,总算找到一点点门道。 首先。明白你的目标。我们在刚开始.........
▪ UIScrollView 兑现自动循环滚动 UIScrollView 实现自动循环滚动
1.实现UIScrollViewDelegate
2.
//
// HomeView.m
// Direction
//
// Created by apple on 12-3-22.
// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//
#import "HomeView.h"
#define WIDTH_OF_SC.........
▪ Xcode4.3 控制台中市文乱码 Xcode4.3 控制台中文乱码
shift+command+<修改 Run project.app->Info->Debugger 为GDB
......
[1]说说日前体会
来源: 互联网 发布时间: 2014-02-18
说说最近体会
这一个月每日每夜的写代码,却总感觉没有人家那么那般行云流水的感觉。后来经过自己几次吐血的经历,总算找到一点点门道。
首先。明白你的目标。我们在刚开始写一个程序之前,不是在脑子里解决以后这个程序怎么怎么做怎么怎么优化,首先,要明白,你要做的是先解决这个程序的是否存在的问题。
经历:在解决一个简单的图片浏览器的时候,我一直在想这个图片浏览器怎么怎么做,要做到怎么怎么好。之后,噩梦开始了。我首选用imageview,但写着写着感觉效果不好吧。然后换成gallery,但因为是功能的原因,一时想不到gallery如何将图片全部放大到一张。于是换成imageswitch,在imageswitch的时候,又因为图片没有gallery那种滑动的感觉,于是将缩写的imageswitch全部删了,重新换成gallery,然后一直在痛苦,打开图片,解决内存,滑动有延迟。。。。。等到所有的完成的差不多的时候,回头看看,其实,我仅仅需要完成一个imageview就行了。后面还有一堆任务。。。。欲哭无泪
其次,在你所写的类中。明白你要的是什么关键数据。就像数据库中那样,一个primary key就可以寻找到你所想要的所有的数据。在一个类中,你想传递给别的类的数据化,就不要弄得太花哨,哎呀,你看,可以加一个指定某种类型的方法,可以加一个空点xx数据的类型。我告诉你,你之后肯定会付出巨额的代价整理你的所有的方法。
经历:写一个文件管理器的时候,在多个activity之间传递数据,我就将几个activity中间隔出来一个java代码块,用来方便的让一个activity的数据方便的传到另外一个activity。但问题来了。我当时想,文件有mp3,MP4 图片是吧。我设置一些这种方法,有别的什么类型我又设置另外几个方法。最后忙了一天。我靠。。。我写了什么。。。他大爷的,最后自己都迷茫了。其实。我仅仅需要传递一个关键字。filepath,文件路径就行了。又是操蛋的一天
最后,我们平时知道很多东西,有些可能是忘了,但是大多都不知道怎么活用。其实,各种大牛都是将东西用活了之后才牛逼起来。。。
经历。缓冲池有很多人知道吧,线程缓冲池,XX缓冲池一大堆。。。但是我在做工程的时候,就tmd没有想到图片也能用缓冲池,最后还是老大一言惊醒。双缓冲了解过吧。没有了解从字面上也可以看出大概怎么用,用兴趣的,做动画,图片,游戏的基本上都会这个。还是当时不小心瞄到书上的这几个关键字我才醒悟过来。平时没有动脑子,都快生锈了。
ok。就介绍到这里。
这一个月每日每夜的写代码,却总感觉没有人家那么那般行云流水的感觉。后来经过自己几次吐血的经历,总算找到一点点门道。
首先。明白你的目标。我们在刚开始写一个程序之前,不是在脑子里解决以后这个程序怎么怎么做怎么怎么优化,首先,要明白,你要做的是先解决这个程序的是否存在的问题。
经历:在解决一个简单的图片浏览器的时候,我一直在想这个图片浏览器怎么怎么做,要做到怎么怎么好。之后,噩梦开始了。我首选用imageview,但写着写着感觉效果不好吧。然后换成gallery,但因为是功能的原因,一时想不到gallery如何将图片全部放大到一张。于是换成imageswitch,在imageswitch的时候,又因为图片没有gallery那种滑动的感觉,于是将缩写的imageswitch全部删了,重新换成gallery,然后一直在痛苦,打开图片,解决内存,滑动有延迟。。。。。等到所有的完成的差不多的时候,回头看看,其实,我仅仅需要完成一个imageview就行了。后面还有一堆任务。。。。欲哭无泪
其次,在你所写的类中。明白你要的是什么关键数据。就像数据库中那样,一个primary key就可以寻找到你所想要的所有的数据。在一个类中,你想传递给别的类的数据化,就不要弄得太花哨,哎呀,你看,可以加一个指定某种类型的方法,可以加一个空点xx数据的类型。我告诉你,你之后肯定会付出巨额的代价整理你的所有的方法。
经历:写一个文件管理器的时候,在多个activity之间传递数据,我就将几个activity中间隔出来一个java代码块,用来方便的让一个activity的数据方便的传到另外一个activity。但问题来了。我当时想,文件有mp3,MP4 图片是吧。我设置一些这种方法,有别的什么类型我又设置另外几个方法。最后忙了一天。我靠。。。我写了什么。。。他大爷的,最后自己都迷茫了。其实。我仅仅需要传递一个关键字。filepath,文件路径就行了。又是操蛋的一天
最后,我们平时知道很多东西,有些可能是忘了,但是大多都不知道怎么活用。其实,各种大牛都是将东西用活了之后才牛逼起来。。。
经历。缓冲池有很多人知道吧,线程缓冲池,XX缓冲池一大堆。。。但是我在做工程的时候,就tmd没有想到图片也能用缓冲池,最后还是老大一言惊醒。双缓冲了解过吧。没有了解从字面上也可以看出大概怎么用,用兴趣的,做动画,图片,游戏的基本上都会这个。还是当时不小心瞄到书上的这几个关键字我才醒悟过来。平时没有动脑子,都快生锈了。
ok。就介绍到这里。
[2] UIScrollView 兑现自动循环滚动
来源: 互联网 发布时间: 2014-02-18
UIScrollView 实现自动循环滚动
1.实现UIScrollViewDelegate
2.
// // HomeView.m // Direction // // Created by apple on 12-3-22. // Copyright (c) 2012年 __MyCompanyName__. All rights reserved. // #import "HomeView.h" #define WIDTH_OF_SCROLL_PAGE 320 #define HEIGHT_OF_SCROLL_PAGE 460 #define WIDTH_OF_IMAGE 320 #define HEIGHT_OF_IMAGE 284 #define LEFT_EDGE_OFSET 0 @implementation HomeView @synthesize scrollView; - (void)dealloc { [scrollView release]; [myTimer release]; [super dealloc]; } - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // Initialization code [self addSubview:[self homeScrollView]]; } return self; } -(UIScrollView *) homeScrollView{ scrollView = [[UIScrollView alloc] init]; CGRect scrollFrame; scrollFrame.origin.x = 0; scrollFrame.origin.y = 0; scrollFrame.size.width = WIDTH_OF_SCROLL_PAGE; scrollFrame.size.height = HEIGHT_OF_SCROLL_PAGE; scrollView = [[UIScrollView alloc] initWithFrame:scrollFrame]; scrollView.bounces = YES; scrollView.pagingEnabled = YES; scrollView.delegate = self; scrollView.userInteractionEnabled = YES; slideImages = [[NSMutableArray alloc] init]; [slideImages addObject:@"image1.png"]; [slideImages addObject:@"image2.png"]; [slideImages addObject:@"image3.png"]; //add the last image first UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:([slideImages count]-1)]]]; imageView.frame = CGRectMake(LEFT_EDGE_OFSET, 0, WIDTH_OF_IMAGE, HEIGHT_OF_IMAGE); [scrollView addSubview:imageView]; [imageView release]; for (int i = 0;i<[slideImages count];i++) { //loop this bit UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:i]]]; imageView.frame = CGRectMake((WIDTH_OF_IMAGE * i) + LEFT_EDGE_OFSET + 320, 0, WIDTH_OF_IMAGE, HEIGHT_OF_IMAGE); [scrollView addSubview:imageView]; [imageView release]; } //add the first image at the end imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:0]]]; imageView.frame = CGRectMake((WIDTH_OF_IMAGE * ([slideImages count] + 1)) + LEFT_EDGE_OFSET, 0, WIDTH_OF_IMAGE, HEIGHT_OF_IMAGE); [scrollView addSubview:imageView]; [imageView release]; [scrollView setContentSize:CGSizeMake(WIDTH_OF_SCROLL_PAGE * ([slideImages count] + 2), HEIGHT_OF_IMAGE)]; [scrollView setContentOffset:CGPointMake(0, 0)]; [self addSubview:scrollView]; [self.scrollView scrollRectToVisible:CGRectMake(WIDTH_OF_IMAGE,0,WIDTH_OF_IMAGE,HEIGHT_OF_IMAGE) animated:NO]; [self performSelector:@selector(updateScrollView) withObject:nil afterDelay:0.0f]; return self.scrollView; } - (void) updateScrollView { [myTimer invalidate]; myTimer = nil; //time duration NSTimeInterval timeInterval = 3; //timer myTimer = [NSTimer scheduledTimerWithTimeInterval:timeInterval target:self selector:@selector(handleMaxShowTimer:) userInfo: nil repeats:YES]; } - (void)handleMaxShowTimer:(NSTimer*)theTimer { CGPoint pt = scrollView.contentOffset; int count = [slideImages count]; if(pt.x == WIDTH_OF_IMAGE * count){ [scrollView setContentOffset:CGPointMake(0, 0)]; [self.scrollView scrollRectToVisible:CGRectMake(WIDTH_OF_IMAGE,0,WIDTH_OF_IMAGE,HEIGHT_OF_IMAGE) animated:YES]; }else{ [self.scrollView scrollRectToVisible:CGRectMake(pt.x+WIDTH_OF_IMAGE,0,WIDTH_OF_IMAGE,HEIGHT_OF_IMAGE) animated:YES]; } } - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { int currentPage = floor((self.scrollView.contentOffset.x - self.scrollView.frame.size.width / ([slideImages count]+2)) / self.scrollView.frame.size.width) + 1; if (currentPage==0) { //go last but 1 page [self.scrollView scrollRectToVisible:CGRectMake(WIDTH_OF_IMAGE * [slideImages count],0,WIDTH_OF_IMAGE,HEIGHT_OF_IMAGE) animated:NO]; } else if (currentPage==([slideImages count]+1)) { //如果是最后+1,也就是要开始循环的第一个 [self.scrollView scrollRectToVisible:CGRectMake(WIDTH_OF_IMAGE,0,WIDTH_OF_IMAGE,HEIGHT_OF_IMAGE) animated:NO]; } } /* // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affects performance during animation. - (void)drawRect:(CGRect)rect { // Drawing code } */ @end
[3] Xcode4.3 控制台中市文乱码
来源: 互联网 发布时间: 2014-02-18
Xcode4.3 控制台中文乱码
shift+command+<
修改 Run project.app->Info->Debugger 为GDB
shift+command+<
修改 Run project.app->Info->Debugger 为GDB
最新技术文章: