2014-11-13 3 views
3

Я хотел бы отредактировать UITableViewRowAction моей таблицы. Мои ячейки имеют закругленные края и границу, я хотел бы отредактировать стиль RowAction, чтобы соответствовать стилю моих ячеек.UITableViewRowAction пользовательский стиль?

Я понимаю, что в настоящее время только backgroundColor, название и стиль (по умолчанию, разрушительный, нормальный ...) можно изменить (link). Однако я чувствую, что это немного ограничено? Возможно, я мог бы подкласса UITableViewRowAction создать собственный внешний вид? Любой совет будет принят во внимание.

К сожалению, я не могу опубликовать пример изображения, потому что у меня еще нет 10 rep (haha). Однако я думаю, что этот вопрос достаточно прост, чтобы его можно было понять без визуального представления.

+0

ваше требование, чтобы добавить границы удаленных кнопок –

+0

moreAction.backgroundColor = [[UIColor Alloc] initWithPatternImage: [UIImage imageNamed: @ "temp.png"]] вы можете добавьте требуемое изображение, чтобы получить его –

+0

Спасибо за быстрый ответ.Я тестировал это решение, и оно работает, но анимация для кнопки удаления, которая исчезает (однажды щелкнула), выглядит немного странно, потому что закругленные края изображения фактически не перемещаются, вместо этого они исчезают, когда прямой край катится вверх, чтобы показать пустое место внизу. Я понимаю, что это, вероятно, лучшее решение на данный момент из-за ограниченной функциональности UITableViewRowAction; но, на мой взгляд, это кажется немного неряшливым API. – Swankzilla

ответ

7

Как вы сказали, единственное, что вы можете изменить на акции являются:

  1. BackgroundColor
  2. стиль (деструктивный (красный BackgroundColor, ...)
  3. название

В Чтобы изменить стиль UITableViewRowAction, вероятным решением является добавление изображения с использованием «patternimage».

Вот решение для this.And Я не говорю, что это точное решение, так как сейчас мы не имеем доступа ко всем свойствам «» UITableViewRowAction

- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath { 
UITableViewRowAction *moreAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"test" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { 

    // show UIActionSheet 
}]; 
float wwidth =[moreAction.title sizeWithAttributes:@{NSFontAttributeName:[UIFont fontWithName:@"Helvetica" size:15.0]}].width; 
wwidth = wwidth+<55 change this value for exact width>; 
moreAction.backgroundColor = [[UIColor alloc] initWithPatternImage:[self imageWithImage:[UIImage imageNamed:@"temp.jpg"] scaledToSize:CGSizeMake(wwidth, tableView.rowHeight)]]; 

UITableViewRowAction *flagAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"Flag" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { 
    // flag the row 
}]; 
flagAction.backgroundColor = [UIColor yellowColor]; 

return @[moreAction, flagAction]; 
} 

Примечание: использовать высокое разрешение изображения так что он работает для

iPhone 6 Plus 736x414 points 5.5" 
iPhone 6  667x375 points 4.7" 
iPhone 5  568x320 points 4.0" 
iPhone 4  480x320 points  3.5" 

сообщения по этой ссылке http://pablin.org/

+0

Я собрал CocoaPod, который попытался бы решить это как можно шире: https://github.com/benguild/BGTableViewRowActionWithImage –

+0

@BenGuild Спасибо! –

+1

[self imageWithImage: [UIImage imageNamed: @ "temp.jpg"] scaledToSize: CGSizeMake (wwidth, tableView.rowHeight)], что это делает? – vaibby

0

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

  • полностью настраиваемый UIView для использования в качестве холста для пользовательских кнопок и просмотров;
  • Автоматическая компоновка;
  • раскадровки;
  • легкая ячейка повторное использование;
  • подсветка ячеек;
  • выбор/отмена выбора клеток;
  • нормальный и режим редактирования;
  • принадлежности виды;
  • совместим с прошивкой 7 и 8.
Смежные вопросы