Настройка границ для моего табличного представления не работает (xcode 4.2, iOS 5.0) - PullRequest
1 голос
/ 12 декабря 2011

Я хотел бы установить границы для моего табличного представления (в UITableViewController), чтобы оно имело меньшую ширину, чем ширина экрана (чтобы фоновое изображение можно было видеть за табличным представлением). Я использую следующую строку кода в моем методе viewDidLoad:

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

Однако эта строка не работает, и просмотр таблицы по-прежнему занимает всю ширину страницы.

Как я могу сделать эту работу?

Кроме того, пока я занимаюсь настройкой табличных представлений, я также хотел бы изменить шрифт текста в ячейках. Как бы я поступил так? Спасибо.

1 Ответ

5 голосов
/ 12 декабря 2011
Свойство

A UITableViewController * view является UITableView. Таким образом, вы не можете уменьшить его view, чтобы показать, что позади, так как за ним ничего нет (по крайней мере, насколько это возможно).

Существует относительно простое решение. Я предполагаю, исходя из вашего примера кода, что у вас есть свойство UITableView на контроллере с именем "tableView", в противном случае его создание будет необходимо.

1) Измените ваш контроллер представления на подкласс UIViewController вместо UITableViewController подкласса. Легко сделать в .h, заменив YourClass:UITableViewController на YourClass:UIViewController.

2) В файле .xib перетащите новый UIView на холст (не в tableView).

3) Перетащите tableView в подпредставление представления, как показано: enter image description here

4) Соедините свойство view владельца файла с UIView, который вы только что добавили.

5) Убедитесь, что ваши соединения выглядят примерно так: enter image description here

С этими изменениями вы можете установить frame , чтобы он был меньше размера вашего представления. У вас есть два варианта, как это сделать: 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) Измените настройку в конструкторе интерфейса напрямую. Что-то вроде:

enter image description here

...