ScrollView分栏视图分析

代码精华部分如下:

//1.添加scrollView
 /* 1). 添加一个scrollView;
    2).创建关注、热门、附近三个控制器。
    3). 存储它们的名字到数组中,遍历并放到本控制器里。
    4).设置scrollView的contentSize.
    5).设置scrollview的偏移量。
    6).调用当停止动画的方法设置为当前的scrollView.(应该是停止拖拽的方法)*/
    NSArray *controls = @[@"STRFollowViewController",@"STRHotViewController",@"STRNearViewController"];
    for (NSInteger i = 0; i < controls.count; i++) {
        UIViewController *vc = [[NSClassFromString(controls[i])  alloc] init];
        vc.title = self.titleNames[i];
        [self addChildViewController:vc];
    }
    self.MainScrollView.contentSize = CGSizeMake(self.titleNames.count *[UIScreen mainScreen].bounds.size.width , 0);
    self.MainScrollView.contentOffset = CGPointMake(SCREEN_WIDTH, 0);
    [self scrollViewDidEndDecelerating:self.MainScrollView];
}
//2.设置代理
#pragma mark scrollViewDelegate
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
    [self scrollViewDidEndScrollingAnimation:scrollView];
}
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{
    /**
     1. 获取宽度和高度,还要打开分页功能
     2. 获取索引值。
     3. 设置偏移量
     4. 设置viewframe,如没有加载过再加载,否则不返回
     5. 添加子控制器view到scrollview上*/
    NSInteger width = SCREEN_WIDTH;
    NSInteger height = SCREEN_HEIGHT;
    CGFloat offsetX = scrollView.contentOffset.x;

    NSInteger index = offsetX/width;
    [self.topView topViewWithIndex:index];
    UIViewController *vc = self.childViewControllers[index];
    if ([vc isViewLoaded]) return;
    vc.view.frame = CGRectMake(offsetX, 0, width, height);
    [self.MainScrollView addSubview:vc.view];
}
//3.添加topView

- (STRTopView *)topView{
    if (!_topView) {
        _topView = [[STRTopView alloc] initWithFrame:CGRectMake(0, 0, 200, 44) titleNames:self.titleNames tagBlock:^(NSInteger index) {
            [self.MainScrollView setContentOffset:CGPointMake(index *SCREEN_WIDTH, 0) animated:YES];
        }];
    }
    return _topView;
}
时间: 2024-10-14 18:00:51

ScrollView分栏视图分析的相关文章

ListView分栏--制作分栏音乐列表

之前我遇到过这样的需求,要求在ListView中按时间对数据分栏,当时的做法是在每个ListView的item中加入时间栏的布局,然后在代码中控制时间栏 的显示与隐藏. 但其实重写Adapter两个方法后就可以完成这个任务,当ListView中带有不同布局的时候,可以根据itemType来加载不同的布局. int getItemViewType(int position) 返回指定position的itemView的viewType,用于加载不同布局.此方法必须返回0到getViewTypeCo

导航状态栏(UINavigationBar)和分栏状态栏(UITabBar)

//*************导航状态栏(UINavigationController)*************** 1.在导航控制器中,所有的子视图控制器共用一个导航状态栏 UINavigationBar *navBar = self.navigationController.navigationBar 2.可设置导航栏的显示风格 navBar.barStyle = UIBarStyleDefault; 3.可设置导航栏的不透明度,默认为YES(不透明) //如果设置为透明,则子视图的左上角

JavaScript(二)--实现分栏

Javascript中讲到了分栏的小实例,这篇文章就写一个小的例子吧,从这个例子中看看我们都学到什么? (一)源代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtm

设置TabBar分栏控制器上图片的大小问题

我们都知道,iOS因为屏幕分辨率的问题,UID在交付我们iOS开发人员程序配图的时候,一般是三套图,分别对应三种不同的分辨率,对不同size的屏幕系统会自动使用不同像素的图片,我们只需要在命名时给三套图统一命名@1x.@2x和@3x就可以了. 那么为什么会有三套图呢? 这是根据iPhone不断更新而随之出现的.iPhone4之前的iPhone3G/iPhone3GS甚至于更早的iPhone一二代手机,屏幕特点是一个点位只有一个像素:而iPhone4开始到iPhone6/iPhone6s,使用的就

Sublime Text 3运行程序以及分栏快捷键的设置

Sublime Text 3软件由于每次运行程序都要执行:Tools -> SublimeREPL -> Python -> RUN current file 菜单有点麻烦,所以现在可以考虑给他创建个快捷键 依次点击:perferences ------ key bindings user,将下列代码粘贴 {"keys":["f2"],"caption": "SublimeREPL: Python - RUN curr

javascript有用小技巧—实现分栏显示

记得给师哥师姐測试考试系统的时候,看到他们的考试页面能够实现隐藏左边的考生信息部分,当时认为好高大上.好人性化. 如今学了javascript,我也能实现这个功能了,以下来显摆一下. 1.页面设计: (1).html代码: <title>js分栏</title> <style type="text/css"> .alignment{ text-align: center; } </style> </head> <scri

WORD里怎样能做到局部“分栏”就是一页里有的分有的不分

选中你要分的部分再分栏如果不想分的部分也被分了,那就可以选中不想分的那部分,选择“分栏”->“一栏” 转自:http://zhidao.baidu.com/question/9873268.html?qbl=relate_question_0&word=word%20%B7%D6%C0%B8%20%D6%D0%B6%CF&optimi=4

bootstrap实现分栏选择性显示和折叠效果

bootstrap为我们提供了非常丰富的js插件和css样式,如何运用bootstrap来实现分栏选择行显示和折叠效果,如下所示: 1.分栏显示 <!doctype html> <html> <head> <!--导入bootstrap样式--> <link href="bootstrap/css/bootstrap.css" rel="stylesheet" type="text/css"&

ActiveReports 报表应用教程 (4)---分栏报表

原文:ActiveReports 报表应用教程 (4)---分栏报表 在 ActiveReports 中可以实现分栏报表布局样式,可以设置横向分栏.纵向分栏,同时进行分栏和分组设置,统计分栏分组的小计.合计等.在商业报表系统中常见的分栏报表有商品标签.员工工卡.条码打印等.本文主要讲解如何在 ActiveReports 中实现横向分栏.纵向分栏和分组分栏报表. 1.横向分栏报表 1.1.在 ASP.NET 应用程序中添加一个名为 rptAcrossDown.cs 的 ActiveReports