Правильный способ определения ширины UITableViewCell для сгруппированных пользовательских ячеек? - PullRequest
4 голосов
/ 08 марта 2011

У меня есть пользовательский UITableViewCell, созданный с помощью кода (не Interface Builder).У меня есть подвиды, которые полагаются на ширину ячейки: есть метка, которая всегда должна находиться внутри правого края ячейки.Ячейки отображаются в сгруппированном табличном представлении.

Изначально я жестко закодировал значения для работы с iPhone, но сейчас я конвертирую приложение в универсальный двоичный файл, и жестко закодированные числа для группировкиТабличные просмотры на iPad.

Есть ли правильный способ получить ширину ячейки?Рамка возвращает всю ширину экрана, что выбрасывает мои метки не на своем месте.Или я должен просто жестко закодировать два набора значений, один для iPhone и один для iPad?

Буду признателен за любые предложения.

Ответы [ 2 ]

9 голосов
/ 08 марта 2011

Вы должны быть в состоянии получить соответствующие размеры из подпредставления contentView ячейки.Но обычно вы должны просто установить размеры и маски авторазмера в ваших подпредставлениях, чтобы ячейка отображалась правильно, независимо от того, какой будет конкретная ширина.

0 голосов
/ 07 марта 2013

Ничто из этого, похоже, не сработало для меня; У меня есть пользовательская ячейка, определенная в xib с графикой на левом краю (20px на iPhone), на iPhone выглядела отлично. Но на iPad рисунок перекрывал границу левой сгруппированной секции! Чтобы исправить это, я установил выход в ограничении по горизонтали (ведущему) к изображению, а затем подправил его в коде для подкласса UITableViewCell:

- (void)setFrame:(CGRect)frame {
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
        self.leadingSpaceConstraint.constant = 40;
    }
    [super setFrame:frame];
}

И теребил номер, пока разрыв не стал правильным. :)

Я понимаю, setFrame: возможно, это было не идеальное место для этого кода, но он работал, поэтому он остался.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...