设置我的表视图的边界不起作用(xcode 4.2,iOS 5.0)

use*_*337 1 ios4 ios5 xcode4.2

我想设置我的表视图的边界(在UITableViewController中),使其宽度小于屏幕宽度(这样可以在表视图后面看到背景图像).我在viewDidLoad方法中使用以下代码行:

  [[self tableView] setBounds:CGRectMake(10,44, 300, 460)]; 
Run Code Online (Sandbox Code Playgroud)

但是,此行无效,tableview仍然占用页面的整个宽度.

我怎样才能做到这一点?

此外,只要我在自定义表视图的主题,我也想更改单元格中的文本的字体.我该怎么做呢?谢谢.

NJo*_*nes 5

A UITableViewControllerview财产是UITableView.所以你不能缩小它view来揭示背后的东西,因为它背后没有任何东西(至少就其而言).

有一个相对简单的解决方案.我假设,根据您的代码示例,您UITableView的控制器上有一个名为" tableView" 的属性,如果不是,则需要创建它.

1)将视图控制器更改为UIViewController子类而不是UITableViewController子类.在轻松完成.h更换YourClass:UITableViewControllerYourClass:UIViewController.

2)在.xib文件中拖出一个新UIView的画布(不在tableView上).

3)将tableView拖动为视图的子视图,如下所示: 在此输入图像描述

4)将文件所有者的视图属性连接为刚刚添加的UIView.

5)检查您的连接是否如下所示: 在此输入图像描述

通过这些更改,您现在可以将框架设置为小于视图的大小.您有两种选择:1)使用如下代码的代码:

-(void)viewDidLoad{
    [super viewDidLoad];
        // set background red to see change
    self.view.backgroundColor = [UIColor redColor];
    CGFloat sideMargin = 10;
    CGFloat topBottomMargin = 44;
    CGFloat originX = sideMargin;
        // compute width based on view size
    CGFloat sizeWidth = (self.view.bounds.size.width - (sideMargin * 2));
    CGFloat originY = topBottomMargin;
        // compute height based on view size
    CGFloat sizeHeight = (self.view.bounds.size.height - (topBottomMargin * 2));
        // set tableView frame
    self.tableView.frame = CGRectMake(originX, originY, sizeWidth, sizeHeight);
}
Run Code Online (Sandbox Code Playgroud)

2)直接更改界面生成器中的设置.就像是:

在此输入图像描述