我已尝试使用此代码调整表格视图的大小:
- - (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:行.
希望这会有所帮助,
随意问我其他细节,