• [IOS笔记]


    CGSize imageSize = [UIImage imageNamed:@"s2_1.png"].size;
        for (int i=0; i<10; ++i) {
            UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"s2_%d.png", i+1]];
            UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
            imageView.frame = CGRectMake(imageSize.width * i,self.m_scrollView.bounds.size.height/2-imageSize.height/2, imageSize.width, imageSize.height);
            [self.m_scrollView addSubview:imageView];
        }
        
        self.m_scrollView.contentSize = CGSizeMake(imageSize.width*10, self.m_scrollView.bounds.size.height);
        self.m_scrollView.scrollEnabled = YES;
        self.m_scrollView.pagingEnabled = NO;  //是否整页滑动
        self.m_scrollView.bounces = YES; //碰到边框时是否反弹
        self.m_scrollView.showsHorizontalScrollIndicator = NO; //显示滚动条

    从你的手指touch屏幕开始,scrollView开始一个timer,如果:

    1.  150ms内如果你的手指没有任何动作,消息就会传给subView。

    2.  150ms内手指有明显的滑动(一个swipe动作),scrollView就会滚动,消息不会传给subView,这里就是产生问题二的原因。

    3. 150ms内手指没有滑动,scrollView将消息传给subView,但是之后手指开始滑动,scrollView传送touchesCancelled消息给subView,然后开始滚动。

    观察下tableView的情况,你先按住一个cell,cell开始高亮,手不要放开,开始滑动,tableView开始滚动,高亮取消。

    delaysContentTouches的作用:

    这个标志默认是YES,使用上面的150ms的timer,如果设置为NO,touch事件立即传递给subView,不会有150ms的等待

    cancelsTouches的作用:

    这个标准默认为YES,如果设置为NO,这消息一旦传递给subView,这scroll事件不会再发生。

    内存:

    初始化如果load所有图片,则内存过大,

    所有通过复用,当imageview 滑动出screen,则移动位置到最后或者最后一个位置,同时调整载入图像

     //如果最左边view出了左边框,将view放到最右边
        UIImageView *view = [imageStore objectAtIndex:0];
        
        if (view.frame.origin.x + view.frame.size.width < offset) {
            [imageStore removeObject:view];
            UIImageView *lastView = [imageStore lastObject];
            view.frame = CGRectMake(lastView.frame.origin.x+lastView.frame.size.width, view.frame.origin.y, view.frame.size.width, view.frame.size.height);
            [imageStore addObject:view];
            
        }
        
        //如果最右边view出了左边框,将view放到最右边,imageStore中为包含所有image view array
        view = [imageStore lastObject];
        if (view.frame.origin.x > offset+self.frame.size.width) {
            [imageStore removeObject:view];
            UIImageView *firstView = [imageStore objectAtIndex:0];
            view.frame = CGRectMake(firstView.frame.origin.x-firstView.frame.size.width, view.frame.origin.y, view.frame.size.width, view.frame.size.height);
            [imageStore insertObject:view atIndex:0];
        }
        
        for (int i = 0; i < imageStore.count; i++) {
            UIImageView *view = [imageStore objectAtIndex:i];
    
            //设置图片
            int currentView = view.frame.origin.x/_itemSize.width+1;
            currentView = currentView%_imageAry.count;
            
            //_imageAry为图片array
            [view setImage:[_imageAry objectAtIndex:currentView]];
            
        }
  • 相关阅读:
    作业题---设计一个类,求和的方法,求乘积的方法
    PHP-----预定义数组和数组的函数
    PHP-----指针遍历
    PHP------定义数组,取值数组和遍历数组
    PHP---------生成随机数,日期时间函数
    PHP的字符串处理
    PHP的正则表达式常用应用
    PHP的正则表达式
    PHP---函数
    PHP分页查询中的条件查询
  • 原文地址:https://www.cnblogs.com/zengyou/p/3325677.html
Copyright © 2020-2023  润新知