Setting bounds for my table view is not working (xcode 4.2, iOS 5.0)

断了今生、忘了曾经 提交于 2019-12-19 11:06:56

问题


I would like to set the bounds for my table view (in a UITableViewController) so that it has a smaller width than the screen width (so that a background image can be seen behind the table view). I use the following line of code in my viewDidLoad method:

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

However, this line is not working and the tableview still takes up the whole width of the page.

How can I make this work?

Also, as long as I'm on the subject of customizing table views, I would also like to change the font of the text in the cells. How would I go about doing that? Thank you.


回答1:


A UITableViewController's view property is a UITableView. So you cannot shrink it's view to reveal what's behind, since there is nothing (At least as far as it's concerned) behind it.

There is a relatively easy solution. I'm assuming, based on your code sample that you have a UITableView property on your controller named "tableView", if not it's creation would be necessary.

1) Change your view controller to be a UIViewController subclass instead of a UITableViewController subclass. Easily done in the .h by replacing YourClass:UITableViewController with YourClass:UIViewController.

2) In the .xib file drag out a new UIView to the canvas (not on the tableView).

3) Drag the tableView to be a subview of the view, as shown:

4) Connect the File's Owner's view property to be the UIView you just added.

5) Check that your connections look something like this:

With these changes you can now set your frame to be smaller than your view's size. You have two choices how to do this: 1) Use code like this code:

-(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) Change the setting in interface builder directly. Something like:



来源:https://stackoverflow.com/questions/8467058/setting-bounds-for-my-table-view-is-not-working-xcode-4-2-ios-5-0

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!