我已尝试使用此代码调整表格视图的大小:
- (id)initWithStyle:(UITableViewStyle)style { if ((self = [super initWithStyle: style])) { UIView *footer = [[UIView alloc] initWithFrame: CGRectMake(0,1,45)]; footer.backgroundColor = [UIColor clearColor]; self.tableView.tableFooterView = footer; self.tableView.frame = CGRectMake(0,320,100); footer.hidden = NO; }
到目前为止,我没有运气.
我也尝试过使用其他窗口并调整所有.XIB文件的大小.
解决方法
如果您希望页脚是静态和非浮动的,那么您有两个简单的选择:
>不理想但很简单:使用最后一部分的页脚视图作为静态页脚.这将在某些条件下工作:
>您的UITableView样式必须是UITableViewStylePlain(因为UITableViewStyleGrouped对UITableView tableHeaderView和tableFooterView的节头/页脚的行为相同
>您将无法使用最后一个部分页脚来实现其目的:为特定部分提供页脚信息
这是一个简单的例子:
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { UIView *view = nil; if (section == [tableView numberOfSections] - 1) { // This UIView will only be created for the last section of your UITableView view = [[UIView alloc] initWithFrame:CGRectZero]; [view setBackgroundColor:[UIColor redColor]]; } return view; }
>现在最佳解决方案:在与UITableView相同的级别添加UIView(在代码中或在XIB中).一个小条件:
> UIViewController的self.view属性不能是您的UITableView对象.这意味着您不能将UITableViewController子类化为UIViewController,并使您的控制器符合UITableViewDataSource和UITableViewDelegate协议.它实际上比它看起来更简单,并且比直接使用UITableViewController更好的实现(就我而言).
这是代码中的一个简单示例(但您可以使用Interface Builder完全相同):
ViewController.h:
#import <UIKit/UIKit.h> @interface ViewController : UIViewController <UITableViewDataSource,UITableViewDelegate> @end
ViewController.m:
#import "ViewController.h" @interface ViewController () @property (strong,nonatomic) UITableView *tableView; @property (strong,nonatomic) UIView *fixedTableFooterView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; CGFloat fixedFooterHeight = 200.0; // Initialize the UITableView CGRect tableViewFrame = CGRectMake(CGRectGetMinX(self.view.bounds),CGRectGetMinY(self.view.bounds),CGRectGetWidth(self.view.bounds),CGRectGetHeight(self.view.bounds) - fixedFooterHeight); self.tableView = [[UITableView alloc] initWithFrame:tableViewFrame style:UITableViewStylePlain]; // or Grouped if you want... [self.tableView setDataSource:self]; [self.tableView setDelegate:self]; [self.view addSubview:self.tableView]; // Initialize your Footer CGRect footerFrame = CGRectMake(CGRectGetMinX(self.view.bounds),CGRectGetMaxY(self.view.bounds) - fixedFooterHeight,fixedFooterHeight); // What ever frame you want self.fixedTableFooterView = [[UIView alloc] initWithFrame:footerFrame]; [self.fixedTableFooterView setBackgroundColor:[UIColor redColor]]; [self.view addSubview:self.fixedTableFooterView]; } - (void)viewDidUnload { [super viewDidUnload]; [self setTableView:nil]; [self setFixedTableFooterView:nil]; } @end
您还可以指定UIViewAutoresizing蒙版,使其在纵向和横向上无缝工作,但我并没有使这个相当简单的代码复杂化.
警告:这个.h和.m文件将无法编译,因为我没有放入UITableViewDataSource所需的方法.如果要查看它的实际效果,请注释setDataSource:行.
希望这会有所帮助,
随意问我其他细节,