2011-12-11 41 views
1

我想爲我的表視圖(在UITableViewController中)設置邊界,使其具有比屏幕寬度更小的寬度(以便背景圖像可以在桌面視圖後面看到)。我用下面的代碼行中我viewDidLoad方法:爲我的表視圖設置邊界不起作用(xcode 4.2,iOS 5.0)

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

然而,該行沒有工作和實現代碼如下仍然佔據了首頁的整個寬度。

我該如何做這項工作?

另外,只要我在自定義表格視圖的主題上,我還想更改單元格中文本的字體。我會怎麼做呢?謝謝。

回答

5

A UITableViewControllerview屬性是UITableView。所以你不能縮小它的view來揭示它的後面,因爲它背後沒有任何東西(至少就它而言)。

有一個相對容易的解決方案。我假設,根據您的代碼示例,您的控制器上有一個名爲「tableView」的UITableView屬性,如果沒有,則需要創建它。

1)將您的視圖控制器更改爲UIViewController子類,而不是UITableViewController子類。通過用YourClass:UIViewController代替YourClass:UITableViewController,在.h中輕鬆完成。

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

3)拖動的tableView是視圖的子視圖,如圖所示: enter image description here

4)將文件的所有者的是你剛纔添加的UIView的視圖屬性。

5)檢查您的連接是這個樣子: enter image description here

有了這些變化,你現在可以設置您的框架比您的視圖的大小。你有兩個選擇,如何做到這一點: 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)更改直接Interface Builder中設置。例如:

enter image description here