делегировать как подходящее место,

ьзуя пользовательский UITableViewCell, я пытаюсь изменить высоту кнопки удаления tableViewCell. Я перепробовал все решения, доступные здесь, на SO.

Все упоминали, что в классе customTableViewCell мы должны переопределитьlayoutSubviews метод и перебратьself.subViews найти подпункт, который должен быть равенUITableViewCellDeleteConfirmationView или в других версиях iOS этоUITableViewCellDeleteConfirmationControl поэтому я использовал следующий код:

- (void)layoutSubviews
{
    [super layoutSubviews];

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationDuration:0.0f];

    for (UIView *subView in self.subviews) {
        NSLog(@"subview: %@", self.subviews);
        if([NSStringFromClass([subView class]) rangeOfString:@"Delete"].location != NSNotFound) {
            CGRect newFrame = subView.frame;
            newFrame.size.height = 87;
            subView.frame = newFrame;
        }
    }

    [UIView commitAnimations];
}

Ноself.subView только два взгляда, т.е.

UITableViewCellContentViewUITableViewCellSeparatorView

Как получить представление кнопки удаления tableViewCell в iOS 10+?

редактировать

Вот моя иерархия представлений:

 Malik21 сент. 2017 г., 09:51
может быть подпредставления этого UiView. Самый быстрый способ получить иерархию - использоватьDebug->View Debugging->Capture View Hierarchy во время отладки. Там вы можете увидеть полную иерархию и получить лучшее представление о том, как перейти к кнопке
 Muhammad Umair21 сент. 2017 г., 09:49
@Malik уже попробовал это,UITableViewCellContentView содержит только одно подпредставление, которое является UIView.
 Malik21 сент. 2017 г., 10:05
Была ли кнопка удаления видимой, когда вы захватили иерархию? Вам нужно открыть приложение, проведите пальцем, чтобы показать кнопку удаления, а затем захватить иерархию. Если вы не можете найти кнопку удаления в списке, найдите ее в графическом представлении, вращая захваченный вид вокруг. Найдя, нажмите на кнопку удаления, и она автоматически выделит ее на левой панели
 Malik21 сент. 2017 г., 09:44
попробуйте получить доступ к подпредставлениямUITableViewCellContentView, Хотя я очень рекомендую не изменять высоту кнопки удаления
 Muhammad Umair21 сент. 2017 г., 10:01
Пожалуйста, смотрите мой обновленный ответ.

Ответы на вопрос(1)

Решение Вопроса

ВiOS10 + иерархия представления для кнопки удаления UITableView была изменена. Теперь он входит в UITableView - UISwipeActionPullView -UISwipeActionStandardButton

Так что теперь вместо переопределения пользовательских UITableViewCelllayoutSubviews метод, нам нужно перебрать подпредставления UITableView, чтобы получить UISwipeActionStandardButton. И я нашел tableView'swillBeginEditingRowAtIndexPath делегировать как подходящее место,

- (void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath
{
    for (UIView *subview in tableView.subviews) {
        if ([NSStringFromClass([subview class]) isEqualToString:@"UISwipeActionPullView"]) {
            if ([NSStringFromClass([subview.subviews[0] class]) isEqualToString:@"UISwipeActionStandardButton"]) {
                CGRect newFrame = subview.subviews[0].frame;
                newFrame.size.height = 72;
                subview.subviews[0].frame = newFrame;

                //Other changes on this view can also be applied like
                subview.subviews[0].backgroundColor = [UIColor redColor];
                subview.subviews[0].layer.cornerRadius = 12;
                subview.subviews[0].layer.masksToBounds = YES;
            }
        }
    }
}

Ваш ответ на вопрос