2009-10-27 3 views
1

Я добавляю метку datetime справа от ячейки таблицы. Когда кнопка «Удалить» отображает кнопку «Удалить», метка даты и времени должна немного сдвинуться влево. Но как получить размер кнопки «Удалить»?Как получить размер кнопки «Удалить» в UITableViewCell при удалении?

Я попытался найти его в cell.subviews, но не смог.

+0

Вероятно, вам не нужно знать размер для ваших целей, поэтому я предложил метод в моем ответе. – DanSkeel

ответ

3

Вам не обязательно знать размер кнопки. Вместо этого используйте размер свойства ячейки contentView, чтобы рассчитать размеры подзонов. При перемещении по ячейке UIKit будет адаптировать размер contentView и вызвать layoutSubviews на объекте ячейки. В вашем подклассе UITableViewCell перезапишите метод layoutSubviews и установите соответствующие размеры для подсмотров.

Посмотрите на RecipeTableViewCell.m примера кода Apple от AppleCoreDataRecipes.

-1

Кнопка удаления - 63x33.

+3

, но если он не английский, размер изменится. –

1

Размер регулируется, чтобы соответствовать содержащемуся тексту. Смотрите следующий код:

- (NSString *)tableView:(UITableView *)tableView 
titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return @"Dynamic width!"; 
} 

против

- (NSString *)tableView:(UITableView *)tableView 
titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return @"⏎"; 
} 
0

Если вы не переопределить метод layoutSubviews в пользовательском табличного ячейке, чем мой подход:

  1. Создайте свой собственный подвид, установите рамку на основе contentView.bounds.
  2. Комплект autoresizingMask до UIViewAutoresizingFlexibleWidth.
  3. Добавьте свой собственный подзаголовок в ContentView ячейки.
  4. Настройка ячейки для editing

Теперь, когда вы проводите на ячейке кнопка удаления появится и ваш вид авто с contentView изменяет.

2

Используйте этот код в пользовательском классе Cell

- (void)layoutSubviews { 
     [super layoutSubviews]; 
     NSMutableArray *subviews = [self.subviews mutableCopy]; 
     while (subviews.count > 0) 
     { 
      UIView *subV = subviews[0]; 
      [subviews removeObjectAtIndex:0]; 
      if ([NSStringFromClass([subV class])isEqualToString:@"UITableViewCellDeleteConfirmationView"]) 
      { 
      UIView *deleteButtonView = (UIView *)[self.subviews objectAtIndex:0]; 
      CGFloat deleteBtnHeight=deleteButtonView.frame.size.height;//here you get the height 
      } 
     } 
    } 
Смежные вопросы