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

前端 未结 1 1071
栀梦
栀梦 2021-01-16 13:19

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 be

相关标签:
1条回答
  • 2021-01-16 13:32

    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: enter image description here

    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: enter image description here

    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:

    enter image description here

    0 讨论(0)
提交回复
热议问题