iPhone 上实现页面循环滚动
2010-03-10 16:10:00 来源:WEB开发网网上没有找到直接能用的详细方法。简单实现了一下。
在实现过程中发现 UIScrollView有以下部分特点:
1)没有动画结束通知。非常头疼,如果有提供代理接口就好了。
2)不会调用 touchBegin touchMove touchEnd 等 UIView的接口,在 sdk3.0以后,这几个接口在 UIScrollView里面不起作用。
3)在滚动的状态下,如果对视图进行了绘制操作或者 addSubview 的操作,则滚动的动画会卡。
4)在 - (void)scrollViewDidScroll:(UIScrollView *)scrollView 代理接口里面,修改 contextOffset 之类的值不会起作用,这个接口最好就是记录一些状态,不要做 UIScrollview 相关的修改。
实现原理:将 UIScrollView 的 contextOffSet 的坐标,在滚动的边缘时进行改变,同时改变 UIScrollView 上 UIview 的center 属性,使 UIScrollView 上的元素能正确的改变。
实现过程:扩展 UIScrollView ,见附件的ExScrollView.h .m
设置自身为监听者,在具备一定的滚动状态判断条件下,调用 - (void)setScrollPosition 实现设置。
设置 ExScrollView 的测试接口
+ expand sourceview plaincopy to clipboardprint?
-(void)setUpViews:(ExScrollView*)sview
{
CGRect dddd = [sview frame];
CGSize rcSize = dddd.size;
int nViewCount = 3;
int perWidth = rcSize.width;
CGRect rc = CGRectMake(0, 0, perWidth, rcSize.height);
UIColor* color[6];
color[0] = [UIColor brownColor];
color[1] = [UIColor purpleColor];
color[2] = [UIColor orangeColor];
color[3] = [UIColor magentaColor];
color[4] = [UIColor yellowColor];
color[5] = [UIColor cyanColor];
int i=0;
for(;i
{
UITextView* pView = [[UITextView alloc] initWithFrame:rc];
UIColor* pColor = color[i%5];
pView.backgroundColor = pColor;
pView.text = [NSString stringWithFormat:@"%view:%d",i+1];
pView.editable = NO;
更多精彩
赞助商链接