当前位置: 编程技术>移动开发
本页文章导读:
▪说说日前体会 说说最近体会
这一个月每日每夜的写代码,却总感觉没有人家那么那般行云流水的感觉。后来经过自己几次吐血的经历,总算找到一点点门道。 首先。明白你的目标。我们在刚开始.........
▪ 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
最新技术文章: