Нечетность UILable в ячейке таблицы - PullRequest
0 голосов
/ 29 февраля 2012

В моем приложении для iPhone есть UITableView с настроенной ячейкой. Текст одного из ярлыков в ячейке может быть довольно длинным, и я хотел бы, чтобы он был обернут и обрезан до границы. Я попробовал несколько вещей, однако этикетка все еще распространяется под значком аксессуара.

Ответы [ 2 ]

1 голос
/ 01 марта 2012

Я бы добавил к ответу elpri, что вам не нужно проходить через все трудности создания собственного подкласса UITableViewCell.Вместо этого вы можете использовать теги, но общий подход верен.

  1. Рассчитайте размер фрейма, ограничив его максимальным размером, используя sizeWithFont:constrainedToSize:lineBreakMode:
  2. Установите ширину / высоту вашей UILabelкадр с использованием calculatedSize.width и calculatedSize.height

При использовании тегов это будет выглядеть следующим образом:

#define NAMELABEL_TAG 1

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"ACellIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    UILabel *nameLabel = (UILabel *)[cell viewWithTag:NAMELABEL_TAG];
    // the rest of your code to resize the frame can go here...
}

Также убедитесь, что стойки и пружины правильно установлены в конструкторе интерфейса, чтобыавтоматически разворачивается при повороте устройства (при условии, что это именно то, что вам нужно).

1 голос
/ 29 февраля 2012

Если у вас есть пользовательский UITableViewCell, вы можете реализовать метод - (void) layoutSubviews и изменить размер UILabel в ячейке.

Что-то вроде:

CGRect titleFrame = _title.frame;
NSString *currentText = [_title text];
CGSize size = [currentText sizeWithFont:_title.font constrainedToSize:CGSizeMake(titleFrame.size.width, 50.0f) lineBreakMode:_title.lineBreakMode];
titleFrame.size.height = size.height;
_title.frame = titleFrame;

Где _title - UILabel.

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