【问题标题】:Setting bounds for my table view is not working (xcode 4.2, iOS 5.0)为我的表格视图设置边界不起作用(xcode 4.2,iOS 5.0)
【发布时间】:2012-01-18 00:26:44
【问题描述】:

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

  [[self tableView] setBounds:CGRectMake(10,44, 300, 460)]; 

但是,这条线不起作用,tableview 仍然占据了页面的整个宽度。

我怎样才能做到这一点?

另外,只要我是关于自定义表格视图的主题,我还想更改单元格中文本的字体。我该怎么做呢?谢谢。

【问题讨论】:

    标签: ios4 ios5 xcode4.2


    【解决方案1】:

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

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

    1) 将您的视图控制器更改为 UIViewController 子类,而不是 UITableViewController 子类。通过将YourClass:UITableViewController 替换为YourClass:UIViewController,在.h 中轻松完成。

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

    3) 拖动tableView成为视图的子视图,如图:

    4) 将 File's Owner 的 view 属性连接为刚刚添加的 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);
    }
    

    2) 直接更改界面生成器中的设置。比如:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-13
      • 1970-01-01
      • 1970-01-01
      • 2011-12-07
      • 2011-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多