代码改变世界

知识的总结

2015-09-28 19:03  真实16  阅读(147)  评论(0编辑  收藏  举报
          在项目中学到的知识和遇到的困难(已经解决的问题)
 
1,tableView的表头
……………         tableView.tableViewHeaderVIew  可以添加滚动的视图,这样可以对整个视图的介绍,很多APP的表头的定时滚动
            tableView.FootHeaderView  表头,表示对整个视图的总结
 
 ****在cell中传值的过程中,cell会自动帮我们自动添加,不用我们多此添加for循环
 
2:滚动视图(UIScrollView)的知识的理解
         >>scrollView.contentSize = CGSizeMake(width, height)
                  其中width *imageView.count 必须要*图片的数量(其中contentSize 表示的是滚动视图的可以滚动的区域)
                   height*imageView.count 表示的垂直滚动的区域
          >> 在滚动视图上添加图片的时候,注意一下的几点
               (1)UIImageView *imageView = [UIImageView alloc]initWithFrame:(width1,height1,width2,height2);
    其中width1 必须乘以图片的数量,不然图片会叠加在一起,不会铺开
 
—————UIPageController (视图控制器)
      **numberOfPages 表示显示在视图上的有多少个点点点
       **currentPages 表示当前的显示的点(是第几个点)
   **pageIndicatorTintColor    (没有跳动到点的颜色)
     ** currentPageIndicatorTinColor  (当前显示点点的颜色)
 
特别注意的是:UIPageController 是添加到self.View 上,而不是在滚动视图上
           
                   {UIScrollView + UIPageController}定时器的图片移动的代码
   >>>>定义全局变量 
                            BOOL last;
                         NSArray *imageArray; //图片的数组
                       NSTimer *timer;     // 定时器

 imageArray = @[@"长城3",@"长城1",@"长城2",@"长城景色"];

//    ----------添加滚动视图

    myscrollView = [[UIScrollView alloc]init];

    myscrollView.frame = tableView.tableHeaderView.frame;

    myscrollView.delegate = self;

    //        是否允许分页

    myscrollView.pagingEnabled = YES;

    //    不能垂直的移动

    myscrollView.showsVerticalScrollIndicator = NO;

    myscrollView.contentSize = CGSizeMake(CGRectGetWidth(tableView.tableHeaderView.frame)*imageArray.count, 200);

    [tableView.tableHeaderView addSubview:myscrollView];

    for (int i = 0; i < imageArray.count; i++) {

        imageView = [[UIImageView alloc]initWithFrame:CGRectMake(WIDTH*i,0 , CGRectGetWidth(tableView.tableHeaderView.frame), HEIGHT/3)];

           imageView.image= [UIImage imageNamed:imageArray[i]];

        //        在滚动视图上添加图片

        [myscrollView addSubview:imageView];

  };

    

    

//   建立页面控制视图

      pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(WIDTH/4+40, HEIGHT/4, 100, 40)];

    //    表示的是几张图片

    pageControl.numberOfPages = imageArray.count;

        pageControl.currentPage = 0;

//        变动时的颜色

        pageControl.pageIndicatorTintColor = [UIColor greenColor];

//  现在的颜色

        pageControl.currentPageIndicatorTintColor = [UIColor blueColor];

        pageControl.tag = 100;

//    必须加载在View上,而不是滚动视图上

        [tableView.tableHeaderView addSubview:pageControl];

    

    [self addTimer];

 
 #pragma mark -------timer 调用

 

//添加定时器

 

- (void)addTimer

{

    timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:selfselector:@selector(nextImage) userInfo:nil repeats:YES];

    

//    记住这段代码,定时器上表示一定动

    [[NSRunLoop currentRunLoop] addTimer:timerforMode:NSRunLoopCommonModes];

}

 

//移除定时器

- (void)removeTimer

{

    //    invalidate |ɪnˈvælɪdeɪt| 使什么作废

    [timer invalidate];

    

    //    时间为空

    timer = nil;

}

 

 

// 定时器调用方法

- (void)nextImage

{

    // 1.增加pageControl的页码

    

    

    

    if (myscrollView.contentOffset.x ==0) {

        

        CGFloat x = WIDTH*(pageControl.currentPage+1);

        

        //        当前的页数

        NSInteger curPage = x/WIDTH;

        

        //        表示的是BOOL last()

        if (last == YES&&pageControl.currentPage>=imageArray.count-1) {

            

            last = NO;

            pageControl.currentPage = 0;

            myscrollView.contentOffset = CGPointMake(0, 0);

            

        }else{

            

            pageControl.currentPage = curPage;

            

            if (pageControl.currentPage == imageArray.count-1) {

                

                last = YES;

                

            }

            

        }

        

    }else{

        

        CGFloat x = myscrollView.contentOffset.x+WIDTH*pageControl.currentPage;

        

        //        NSLog(@"%f",scrollShowTeacher.contentOffset.x);

        

        NSInteger curPage = x/WIDTH;

        

        if (last == YES&&pageControl.currentPage>=imageArray.count-1) {

            

            last = NO;

            

            pageControl.currentPage = 0;

            

            myscrollView.contentOffset = CGPointMake(0, 0);

            

        }else{

            

            pageControl.currentPage = curPage;

            

            if (pageControl.currentPage == imageArray.count-1) {

                

                last = YES;

            }

        }

    }

    

    //  ------------------------------------------------

    

    

    

    // 2.计算scrollView滚动的位置

    

    CGFloat offsetX = pageControl.currentPage * WIDTH;

    

    CGPoint offset = CGPointMake(offsetX, 0);

    

    //    NSLog(@"------");

    

    [myscrollView setContentOffset:offset animated:YES];

    

}

 

//开始拖拽的时候移除定时器

 

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

{

    [self removeTimer];

}

 

//停止拖拽的时候添加定时器

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate

{

    [self addTimer];

}

 

 

 

 

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

{

    

    //    滚动尺寸的偏移量

    CGFloat x = scrollView.contentOffset.x;

    

    //    NSLog(@"%f",x);

    //    teacherPage.currentPage = x/w;

    

    //    当前的页面的数量

    NSInteger curPage = x/WIDTH;

    

    if (last == YES&&pageControl.currentPage>imageArray.count-1) {

        

        last = NO;

        

        pageControl.currentPage = 0;

        

        //        滚动视图的偏移量

        scrollView.contentOffset = CGPointMake(0, 0);

        

    }else{

        

        pageControl.currentPage = curPage;

        

        if (pageControl.currentPage == imageArray.count-1) {

            

            last = YES;

            

        }

    }    

}

 

 

设置UISearchBar(收索栏)   在当前的也页面显示,到跳转到下一个页面,UISearchBar(收索栏)就消失

————UISearchBar *searchBar  = [UISearchBar alloc]initWithFrame:CGRectMake(100,100,100,100);
      >> placeholder 提示语
     >>> searchBar.layer.cornerRadius 表示四周的圆角
 
把UISearchBar(搜索栏) 添加到 navigationController 上
  [self.navigationController.navigationBar addSubview:searchBar];
 
// 设置导航栏上按钮(设置的左侧的按钮)
UIBarButtonItem *left = [[UIBarButtonItem alloc]init];
       self.navigationItem.leftBarButtonItem = left;
 
 

#pragma mark ----------隐藏工具栏

- (BOOL)prefersStatusBarHidden

{

    

    return YES;

}

#pragma mark ------搜索栏(回收键盘)

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar

{

    [searchBar  resignFirstResponder];

    

}

 

  

#pragma mark -----------让收索栏出现

-(void)viewWillAppear:(BOOL)animated

{

    [self.navigationController.navigationBar viewWithTag:100].hidden = NO;

}

 

【UISearchBar的代理方法】

#pragma mark ------------让收索栏消失

- (void)viewDidDisappear:(BOOL)animated

{

    [self.navigationController.navigationBar viewWithTag:100].hidden = YES;

}