请教如何改变刷新tableview headerHeaderView的高度

如何设置不同组section的的头部高度?tableView heightForHeaderInSection
如何设置不同组section的的头部高度?tableView heightForHeaderInSection
[摘要:- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
//猎取indexPath
NSIndexPath *indexPath = [[NSIndexPath alloc]i]
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
//获取indexPath
&&& NSIndexPath *indexPath = [[NSIndexPath alloc]initWithIndex:section];
&&& if (0 == indexPath.section) {//第一组
&&&&&&& return 20;
&&& return 15;
感谢关注 Ithao123精品文库频道,是专门为互联网人打造的学习交流平台,全面满足互联网人工作与学习需求,更多互联网资讯尽在 IThao123!
Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
产品设计是互联网产品经理的核心能力,一个好的产品经理一定在产品设计方面有扎实的功底,本专题将从互联网产品设计的几个方面谈谈产品设计
随着国内互联网的发展,产品经理岗位需求大幅增加,在国内,从事产品工作的大部分岗位为产品经理,其实现实中,很多从事产品工作的岗位是不能称为产品经理,主要原因是对产品经理的职责不明确,那产品经理的职责有哪些,本专题将详细介绍产品经理的主要职责
IThao123周刊Pages: 1/2
主题 : 请问UITableViewController里面的view如何调整高度?
级别: 新手上路
可可豆: 0 CB
威望: 4 点
在线时间: 26(时)
发自: Web Page
请问UITableViewController里面的view如何调整高度?&&&
大家好,我在用UITableViewController里建立了一个UITableView, 并赋给了UITableViewController的view.但是这个UITableView无法调整高度?请问如何解决呢?
代码类似于:
UITableView * XXTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, ScreenWidth, H) style:UITableViewStylePlain];&
self.view = XXTableV & //直接给指针,不是添加subview.
其中self是UITableViewCtronller. 无论我如何调节H的值,都无法改变tableView的高度。
我之前试过将XXTableView以subview添加进UITableviewController的view上。但是那样会乱。并且也调不了。详见我的上一个问题。
请问我这个是哪里出来错呢?十分感谢!
&
级别: 侠客
UID: 323613
可可豆: 304 CB
威望: 224 点
在线时间: 201(时)
发自: Web Page
UITableViewController默认是UItableve的高度。没办法修改和调整的,默认就是那么高和宽,你只有在UIView上设置一个Tableview在进行设置他的宽和高。。
级别: 新手上路
UID: 293975
可可豆: 118 CB
威望: 196 点
在线时间: 208(时)
发自: Web Page
我之前试过将XXTableView以subview添加进UITableviewController的view上。但是那样会乱。并且也调不了。
& & &--- 这个可以调啊,我一直是这么做的
&CGRect &rect = tableview.
rect.size.height += 20;
tableView.frame = rect
级别: 新手上路
可可豆: 0 CB
威望: 4 点
在线时间: 26(时)
发自: Web Page
谢谢回复!我就是这样设置的。我把我建立的Tableview直接赋值给那个TableViewController.view。而不是按subview添加上去。然后这样后,我对TableView高度的设置就不起作用。如果我把底层的控制器类型从TableViewController改成最基本的UIViewController。就没问题。只是我需要下拉刷新,一个三方包要求底层控制器必须是能拖动的控制器类型。
级别: 新手上路
可可豆: 0 CB
威望: 4 点
在线时间: 26(时)
发自: Web Page
to chenyuyun2014:谢谢,我不是按照subview添加到UITableviewController的view的。而是直接赋值UITableviewController.view = 我创建的tableview。因为我之前碰到了问题。就是滑动会混乱,一个能滑动的view上还有一个能滑动tableView。最后改成直接赋值问题消失了。
级别: 新手上路
UID: 298880
可可豆: 11 CB
威望: 32 点
在线时间: 393(时)
发自: Web Page
楼主你是想改变tableview的高度,还是想改变tableview的cell的高度?若是cell的高度,按你的方法,我的demo是可以改变的。
如果是想改变tableview的高度。这个得根据实际情况加些代码了.比如你将这个UITableViewController设置为appDelegate的rootViewController。你会发现,即使你在UITableViewController 的loadView里面修改了self.view.frame。运行后发现还是满屏。这个时候,你需要在self.window.rootViewController=tableController后面添加这一句tableController.view.frame=CGRectMake(0,0,320,Height);才能修改tableview的高度。原因是self.window.rootViewController=tableController这句代码会把tableController的高度修改成applicationFrame.至于至于其他原因还需要具体分析了
&
级别: 新手上路
可可豆: 0 CB
威望: 4 点
在线时间: 26(时)
发自: Web Page
谢谢回复!我就是这样设置的。我把我建立的Tableview直接赋值给那个TableViewController.view。而不是按subview添加上去。然后这样后,我对TableView高度的设置就不起作用。如果我把底层的控制器类型从TableViewController改成最基本的UIViewController。就没问题。只是我需要下拉刷新,一个三方包要求底层控制器必须是能拖动的控制器类型。
级别: 新手上路
可可豆: 0 CB
威望: 4 点
在线时间: 26(时)
发自: Web Page
级别: 新手上路
可可豆: 0 CB
威望: 4 点
在线时间: 26(时)
发自: Web Page
不好意思,回复钮按错了。刚开始那个是回复楼下的。2次都回复错人了。。。谢谢你的帮忙!不过好像还是不行。我不是想改变cell的高度。而是想改变Tableview的高度。也就是cells能在多大的窗口里滑动。如果这个tableview是加载在UIViewController上的,那么一切没问题,直接定义一个tableView然后addSubview加在UIViewController.view上就行了。但是我需要用一个第三方类,去实现下拉刷新等等,其要求Controller必须是可以滑动的子类。所以就把Controller改成了UITableviewController。但是如果这样的话把一个TableView按子视图添加上去会有问题。会出现“画中画”现象。即大框里面还有个小框也能滑(我是这样理解的,我建立的tableview跟controller自己的view都能滑,所有有这个问题)。我目前的解决方法是新建一个TableView,然后直接赋给controller的view。即UITableViewController.view = myTableV 但是这样的话,无法改变我创建的myTableView的大小。我按你说的试了下,还是不能改变我创建的TableView的高度。我觉得原因是这样的:我既然把自己定义的TableView赋给了Controller的view。(定义的TableViewController的类里self.view = myTableV)那么self.view.frame=CGRectMake(0,0,320,Height); 其实跟 直接改myTableView的高度是等价的。
级别: 新手上路
UID: 298880
可可豆: 11 CB
威望: 32 点
在线时间: 393(时)
发自: Web Page
怎么改变不了?哦,你是不是加了导航栏?
Pages: 1/2
关注本帖(如果有新回复会站内信通知您)
3*3+1 正确答案:10
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版1317人阅读
iphone/object-c(177)
&最近遇到一个 问题,就是使用单独的一个 xib文件 autolayout来创建一个 UITableView的 tableHeader. &这个 xib是一个动态高度的View。&
& & & 所以就有个问题,用xib 创建完的 View是 固定高度的,如果直接用 :&&
& &m_contentTableView.tableHeaderView= headerV&
& &这样类似的语句去设置 headerView,那么这个headerView 总会是固定的高度,如果内容过多会显示不完整,如果内容过少,那么就会留下一段空白。
& &尝试了headView内部用一个变量m_bNeedHeight来记录 headerView的内部实际需要的高度,然后在每次这个
m_bNeedHeight的时候,在外面修改 headerView的 Frame ,代码如下:
-(void) onNeedsHeightChanged:(CGFloat) nNeedsHeight
& & CircleDetailsHeaderView * headerView = [self
getHeaderView];
& & if (headerView)
& & & & CGRect frame = headerView.frame;
& & & & frame.size.height = nNeedsH
& & & & headerView.frame =
这样就好了吧,哈哈,run一下,发现然并卵,这并没有什么鸟用。
问题在哪呢?&
发现下面的才是终极解决问题的代码:
-(void) onNeedsHeightChanged:(CGFloat) nNeedsHeight
& & CircleDetailsHeaderView * headerView = [self
getHeaderView];
& & if (headerView)
& & & & CGRect frame = headerView.frame;
& & & & frame.size.height = nNeedsH
& & & & headerView.frame =
& & & & m_contentTableView.tableHeaderView = headerV
那就是不但要重新设置frame,而且需要重新赋值给 tableView,这样tableView才会重新去layout 这个外面赋值过去的headerView的 位置和大小。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1287769次
积分:14396
积分:14396
排名:第544名
原创:253篇
转载:130篇
评论:155条
(2)(21)(2)(1)(4)(2)(1)(15)(9)(1)(3)(4)(6)(1)(2)(2)(2)(2)(2)(2)(4)(2)(8)(16)(10)(23)(14)(7)(16)(4)(3)(3)(15)(3)(42)(6)(17)(16)(1)(4)(7)(6)(9)(17)(1)(1)(5)(2)(6)(1)(3)(1)(9)(7)(2)(1)(4)(5)(7)UITableView-的cell 自定义 高度,样式
UITableView的强大更多程度上来自于可以任意自定义UITableViewCell单元格。通常,UITableView中的Cell是动态的,在使用过程中,会创建一个Cell池,根据每个cell的高度(即tableView:heightForRowAtIndexPath:返回值),以及屏幕高度计算屏幕中可显示几个cell。而进行自定义TableViewCell无非是采用代码实现或采用IB编辑nib文件来实现两种方式,本文主要收集代码的方式实现各种cell自定义。
如何动态调整Cell高度
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
&&& static NSString *CellIdentifier = @&Cell&;
&&& UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
&&& if (cell == nil) {
&&&&&&& cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
&&&&&&& UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero];
&&&&&&& label.tag = 1;
&&&&&&& label.lineBreakMode = UILineBreakModeWordW
&&&&&&& label.highlightedTextColor = [UIColor whiteColor];
&&&&&&& label.numberOfLines = 0;
&&&&&&& label.opaque = NO; // 选中Opaque表示视图后面的任何内容都不应该绘制
&&&&&&& label.backgroundColor = [UIColor clearColor];
&&&&&&& [cell.contentView addSubview:label];
&&&&&&& [label release];
&&& UILabel *label = (UILabel *)[cell viewWithTag:1];
&&& NSString *
&&& text = [textArray objectAtIndex:indexPath.row];
&&& CGRect cellFrame = [cell frame];
&&& cellFrame.origin = CGPointMake(0, 0);
&&& label.text =
&&& CGRect rect = CGRectInset(cellFrame, 2, 2);
&&& label.frame =
&&& [label sizeToFit];
&&& if (label.frame.size.height & 46) {
&&&&&&& cellFrame.size.height = 50 + label.frame.size.height - 46;
&&& else {
&&&&&&& cellFrame.size.height = 50;
&&& [cell setFrame:cellFrame];
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
&&& UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];
&&& return cell.frame.size.
如何用图片自定义Table Separeator分割线
一般地,利用类似[tableView setSeparatorColor:[UIColor redColor]];语句即可修改cell中间分割线的颜色。那又如何用一个图片作为分割线背景呢?可以尝试如下:
先设置cell separatorColor为clear,然后把图片做的分割线添加到自定义的custom cell上。
在cell里添加一个像素的imageView后将图片载入进,之后设置tableView.separatorStyle = UITableViewCellSeparatorStyleNone
自定义首行Cell与其上面导航栏间距
tableView.tableHeaderView = [[[UIView alloc] initWithFrame:CGRectMake(0,0,5,20)] autorelease];
自定义UITableViewCell的accessory样式
&&&&& 默认的accessoryType属性有四种取值:UITableViewCellAccessoryNone、UITableViewCellAccessoryDisclosureIndicator、UITableViewCellAccessoryDetailDisclosureButton、UITableViewCellAccessoryCheckmark。如果想使用自定义附件按钮的其他样式,则需使用UITableView的accessoryView属性来指定。
UIButton *
if(isEditableOrNot) {
&&& UIImage *image = [UIImage imageNamed:@&delete.png&];
&&& button = [UIButton buttonWithType:UIButtonTypeCustom];
&&& CGRect frame = CGRectMake(0.0,0.0,image.size.width,image.size.height);
&&& button.frame =
&&& [button setBackgroundImage:image forState:UIControlStateNormal];
&&& button.backgroundColor = [UIColor clearColor];
&&& cell.accessoryView =
&&& button = [UIButton buttonWithType:UIButtonTypeCustom];
&&& button.backgroundColor = [UIColor clearColor];
&&& cell.accessoryView =
以上代码仅仅是定义了附件按钮两种状态下的样式,问题是现在这个自定义附件按钮的事件仍不可用。即事件还无法传递到UITableViewDelegate的accessoryButtonTappedForRowWithIndexPath方法上。当我们在上述代码中在加入以下语句:
&&&&&&&&&&&& [button addTarget:self action:@selector(btnClicked:event:) forControlEvents:UIControlEventTouchUpInside];
后,虽然可以捕捉到每个附件按钮的点击事件,但我们还无法进行区别到底是哪一行的附件按钮发生了点击动作!因为addTarget:方法最多允许传递两个参数:target和event,这两个参数都有各自的用途了(target指向事件委托对象,event指向所发生的事件)。看来只依靠Cocoa框架已经无法做到了。
&&&&& 但我们还是可以利用event参数,在自定义的btnClicked方法中判断出事件发生在UITableView的哪一个cell上。因为UITableView有一个很关键的方法indexPathForRowAtPoint,可以根据触摸发生的位置,返回触摸发生在哪一个cell的indexPath。而且通过event对象,正好也可以获得每个触摸在视图中的位置。
// 检查用户点击按钮时的位置,并转发事件到对应的accessory tapped事件
- (void)btnClicked:(id)sender event:(id)event
&&&& NSSet *touches = [event allTouches];
&&&& UITouch *touch = [touches anyObject];
&&&& CGPoint currentTouchPosition = [touch locationInView:self.tableView];
&&&& NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:currentTouchPosition];
&&&& if(indexPath != nil)
&&&&&&&& [self tableView:self.tableView accessoryButtonTappedForRowWithIndexPath:indexPath];
这样,UITableView的accessoryButtonTappedForRowWithIndexPath方法会被触发,并且获得一个indexPath参数。通过这个indexPath参数,我们即可区分到底哪一行的附件按钮发生了触摸事件。
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
&&& int& *idx = indexPath.
&& //这里加入自己的逻辑
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'

我要回帖

更多关于 tableheaderview 的文章

 

随机推荐