`

(转)iphone中Grid控件实现思路、代码

    博客分类:
  • ios
 
阅读更多

(转自)http://www.devdiv.com/home.php?mod=space&uid=1&do=blog&id=2125

最近论坛上网友wxy1978125一直在问iphone中Grid问题,并且从网上下载了一个例子。
例子功能很强大,还可以滚动,唯一可惜的是数据只能放在一列上。

原理:
这里我来说说它的实现原理,其实并不复杂,简单的说就是多个view排列出来的。
最上面有是标题由vTopLeft/vTopRight这两个UIView组成
显示内容的由vLeftContent/vRightContent这两个UIView组成的。其中vLeftContent显示左边第一列,其他的内容都是放在第二列的,放在vRightContent。
如图所示,上边的深灰色的就是VTopLeft/vTopRight,左侧第一列显示数字的就是vLeftContent,而其他内容都是vRightContent显示的。



代码解释:
其中fillData函数中填充显示标题和内容列
    for(int column = 0;column < [dataSource.titles count];column++){
        ..............................
        if( 0 == column){
            [vTopLeft addSubview:l];
        }
这里是画标题栏("時限")
其他标题在这里画的
        else{    
            [vTopRight addSubview:l];
            columnOffset += columnWidth;
        }

同样,填充内容列
    for(int i = 0;i<[dataSource.data count];i++){
        
        NSArray *rowData = [dataSource.data objectAtIndex:i];
        columnOffset = 0.0;
        
        for(int column=0;column<[rowData count];column++){
           .............................
            UILabel *l = [[UILabel alloc] initWithFrame:CGRectMake(columnOffset, i * cellHeight  , columnWidth, cellHeight -1 )];
            ..............................
这里是填充第一列的内容
            if( 0 == column){
                l.frame = CGRectMake(columnOffset,  i * cellHeight , columnWidth -1 , cellHeight -1 );
                [vLeftContent addSubview:l];
            }
第二列的内容在这里填充
            else{    
                [vRightContent addSubview:l];
                columnOffset += columnWidth;
            }
我们可以看到实际上,它就是新创建一个UILabel用来放文本内容,然后把UILable作为vLeftContent/vRightContent这两个UIView的subView。

如何新增一列:
根据以上原理,对代码做了修改,增加了一列,效果图

 


由于原理并没有变,我只简单说说怎么增加一列,首先标题栏要增加一列,这时候vTopRight在屏幕中的位置注意要右移;同样增加了content列,命名为vLeftContentN1,也需要调整vRightContent位置;另外需要调整的就是fillData函数了,记得对column==1做特别处理;最后需要注意的是滚动事件的处理。
我就不废话做过多解释了,大家可以下载代码,搜索代码中所有以N1结尾的串,都是我新加的,你可以模仿着增加新列实现Grid。

代码下载地址:
http://www.devdiv.com/thread-32746-1-1.html

本文由Vincent (vincent@devdiv.com)原创,转载请注明出处
分享到:
评论

相关推荐

    ios 自定义表格控件 gridview

    在iOS开发中,为了实现更丰富的用户界面,开发者经常需要自定义控件来满足特定需求。在这种情况下,"ios 自定义表格控件 gridview" 提供了一种解决方案,特别是对于那些希望实现类似网格布局,同时支持首列固定和...

    wpf仿iphone桌面翻页效果

    在本文中,我们将深入探讨如何在Windows Presentation Foundation (WPF) 中实现仿iPhone桌面的翻页效果。这个项目的核心目标是为用户提供一个类似iPhone主屏幕的用户体验,包括平滑的翻页动画以及在不满足翻页条件时...

    wpf实现iphone滑动效果demo

    在本篇文档中,我们将详细解析一个使用 WPF(Windows Presentation Foundation)技术实现类似 iPhone 滑动效果的示例代码。该示例通过模拟 iPhone 的触控操作来创建平滑、自然的滑动体验。 #### 核心知识点概览 1....

    WPF自制仿IPhone样式的CheckBox

    在本文中,我们将深入探讨如何在Windows Presentation Foundation (WPF) 中创建一个仿照iPhone样式的自定义CheckBox控件。WPF是微软提供的一种用于构建桌面应用程序的强大框架,它允许开发者利用丰富的图形、动画和...

    仿iPHONE UI C#源码

    在C#中,我们可以使用Grid、StackPanel或DockPanel等控件来实现类似的布局。例如,StackPanel允许元素按垂直或水平方向堆叠,而Grid则允许更复杂的二维布局。 2. **样式和模板**:为了实现iPhone的视觉效果,我们...

    WPF仿Iphone发送消息

    8. **样式资源**:为了保持代码的整洁和可维护性,可以将常用的样式和模板定义为资源,然后在多个控件中复用。这样,如果需要更改气泡的样式,只需要修改一处即可。 总结来说,通过熟练运用WPF和C#,我们可以构建出...

    IOS应用源码——自制 iPhone DataGrid 数据列表组件,支持行列锁定Grid.rar

    此DataGrid组件可能是基于这些原生控件进行扩展,通过自定义Cell和Layout策略,实现了行列固定的特性,这在处理如财务报表、日程表等需要多维度查看数据的应用场景中非常有用。 该组件可能包含以下关键知识点: 1....

    IOS应用源码之自制 iPhone DataGrid 数据列表组件,支持行列锁定Grid .zip

    在iOS中,我们可以使用UITableView或UICollectionView来实现类似的功能,但原生的控件并不直接支持行列锁定。这个开源组件则通过自定义视图和布局管理,实现了这一特性。 在iOS开发中,自定义视图是非常常见的,它...

    IOS应用源码之自制 iPhone DataGrid 数据列表组件,支持行列锁定Grid.zip

    本压缩包“IOS应用源码之自制 iPhone DataGrid 数据列表组件,支持行列锁定Grid.zip”提供了一个自定义的数据网格解决方案,特别适合于需要展示表格形式信息的应用场景。下面我们将深入探讨这个源码中的关键知识点。...

    iphone and itouch programming

    - **代码实现**:使用Objective-C或Swift语言编写界面逻辑代码。 - **动态加载与自定义控件**:学习如何动态加载资源以及创建自定义控件来增强应用的功能性和美观度。 #### 四、样式设计 - **章节4:使用CSS进行...

    类似Iphone滑动的Datagrid框,效果不是很好

    综上所述,要实现一个类似iPhone滑动效果的Datagrid组件,需要考虑性能、用户体验、代码实现和跨平台兼容性等多个因素,并且可能涉及到各种开发工具和技术,如前端框架、数据网格库、服务器端通信以及性能优化策略。...

    iPhone DataGrid 数据列表组件,支持行列锁定

    3. `Grid.xcodeproj`: 这是Xcode项目文件,包含了项目的设置、源代码、资源文件等信息,用于在Xcode环境中管理和构建应用。 4. `MainWindow.xib`: 应用程序的主窗口文件,定义了应用启动时的初始界面布局。 5. `...

    iPhone风格的单选框和复选框特效代码

    为了实现更真实的iPhone风格,还可以考虑使用Flexbox或Grid布局来保证控件在不同屏幕尺寸下的适配性,以及添加响应式设计,使其在移动设备上表现得更加自然。此外,可以使用一些现代前端框架,如React或Vue.js,来...

    ControlTiltEffect

    通过这种方式,你可以为Windows Phone 7应用程序中的任何控件实现类似iPhone的“Tilt to Live”效果,增加用户界面的吸引力。 在提供的压缩包文件"ControlTiltEffect"中,可能包含了实现此效果的完整示例代码,包括...

    C# WM wince UI集合版(7 IN 1)

    2. **控件布局管理**:在WM和Wince平台上,布局管理包括了各种控件(如按钮、文本框、列表视图等)的排列和对齐方式,可能涉及到Grid、StackPanel、TableLayoutPanel等布局容器。 3. **触摸屏支持**:由于这些设备...

    WPF仿WP7短信列表源码201273

    由于不像Iphone那样的短信列表,所以不需要很多的素材,实现起来很方便。 一个Grid,里面分为三行,上下两行分别放置两个气泡箭头,中间那层就放置内容。 先是声明了一个依赖属性:IsLeft,用来标识是在左边显示还是...

    一个用html写的简单的网站,介绍界面特点的

    描述中的“其中有iphone和一些网站的”暗示了这个网站可能包含了一些与iPhone相关的界面示例,或者是关于如何在网页上展示或模拟iPhone界面的教程。此外,提到的“一些网站”可能意味着这个项目还展示了不同类型的...

Global site tag (gtag.js) - Google Analytics