изменить размер текстовой метки представления UITable

Я создал UITableView и написал следующий код в cellForRowAtIndexPath

static NSString *CellIdentifier = @"RootViewControllerCellIdentifier";

UITableViewCell *cell = [self.tableView queueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

    cell.selectionStyle = UITableViewCellSelectionStyleGray;    

}

// Set appropriate labels for the cells.
switch (indexPath.row) {
    case 0:
        cell.textLabel.text = @"Static Scenes";             
        **[cell.textLabel setFrame:CGRectMake(200, 20, 500,600)];**
        cell.imageView.image=[UIImage imageNamed:@"RunOptionsImage.png"];
        cell.imageView.frame=CGRectMake(15, 20, 55, 65);
        break;

как вы можете понять из приведенного выше кода, у меня есть текстовая метка ячейки tableview с именем Static Scenes.

в этом коде [cell.textLabel setFrame:CGRectMake(200, 20, 500,600)]; я планирую установить рамку textLabel. но ее размер не изменяется в соответствии с установленной рамкой. Я также использовал этот код cell.textLabel.frame = CGRectMake(200, 20, 500,600). может ли кто-нибудь сказать мне хороший способ изменить размер текстовой метки.


person Vipin    schedule 15.06.2011    source источник
comment
Если какой-либо из ответов помог, вы должны принять его. Если вам нужна дополнительная помощь по этой проблеме, сообщите об этом.   -  person Deepak Danduprolu    schedule 19.06.2011


Ответы (3)


В дополнение к изменению размера текстовой метки вам также потребуется вернуть соответствующую высоту в методе tableView:heightForRowAtIndexPath:. В противном случае любые изменения макета не будут отражены.

person Deepak Danduprolu    schedule 15.06.2011

Насколько я понимаю, вы никогда не должны изменять ничего, кроме содержимого ячейки внутри ячейки в cellForRowAtIndexPath. Посмотрите один из моих вопросы из прошлого. Резюме:

Итак, золотое правило: НИКОГДА не меняйте структуру ячеек после того, как вы ее удалили. Если вам нужно изменить структуру, используйте РАЗНЫЕ идентификаторы ячеек. Конечно, чем более настраиваемой является ячейка, тем проще ее повторно использовать.

person donalbain    schedule 15.06.2011

Я считаю, что UITableView фактически размещает ячейку после того, как запрашивает cellForRowAtIndexPath. Хотя я согласен с ответом donalbain в том, что вы должны использовать настраиваемую ячейку, я считаю, что вы можете получить желаемую функциональность, изменив фрейм внутри этого метода делегата.

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
person Scott Rice    schedule 15.06.2011