首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使UITableViewCell上的iOS 11自定义删除按钮

如何使UITableViewCell上的iOS 11自定义删除按钮
EN

Stack Overflow用户
提问于 2017-09-22 09:16:41
回答 1查看 209关注 0票数 0

这是一段代码,它可以显示带有一些自定义内容(颜色、图像)的UITableViewCell删除按钮,但是当我在iOS 11上更新之后,这个代码就不起作用了,而不是我的自定义按钮,我只有红色按钮。我又是如何理解苹果换键"UITableViewCellDeleteConfirmationButton“的。也许你知道怎么解决这个问题?

代码语言:javascript
运行
复制
- (UIView*)recursivelyFindConfirmationButtonInView:(UIView*)view
{
    if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_7_1) {
        // iOS 8+ code here
        for(UIView *subview in view.subviews) {

            if([NSStringFromClass([subview class]) rangeOfString:@"UITableViewCellActionButton"].location != NSNotFound)
                return subview;

            UIView *recursiveResult = [self recursivelyFindConfirmationButtonInView:subview];
            if(recursiveResult)
                return recursiveResult;
        }
    }

    else{
        // Pre iOS 8 code here
        for(UIView *subview in view.subviews) {
            if([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellDeleteConfirmationButton"]) return subview;
            UIView *recursiveResult = [self recursivelyFindConfirmationButtonInView:subview];

            if(recursiveResult) return recursiveResult;

        }
    }
    return nil;

}

-(void)overrideConfirmationButtonColor
{

    dispatch_async(dispatch_get_main_queue(), ^{
        UIView *confirmationButton = [self recursivelyFindConfirmationButtonInView:self];
        if(confirmationButton)
        {
            self.buttonConfirm = [[UIButton alloc]initWithFrame:CGRectMake(13, 15, 90, 90)];
            self.buttonConfirmAnimation = [[UIImageView alloc]initWithFrame:CGRectMake(12, 15, 40, 40)];


            self.buttonConfirmAnimation.image = [UIImage imageNamed:@"heartWh"];

            confirmationButton.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"patternPlist@2x"]];

            [confirmationButton addSubview:self.buttonConfirmAnimation];

            [confirmationButton bringSubviewToFront:self.buttonConfirm];

        }
    });

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-23 16:15:00

我也遇到了同样的问题--因为iOS 11.x提议的解决方案不再有效。我注意到苹果不再使用UIButton作为删除按钮,而是使用一个名为UITableViewCellEditControl的UIView,这个视图有两个子视图。

这两个子视图实际上是UIImageView类型,一个带有删除图标的彩色图像,另一个带有灰色版本(我猜是某种效果/阴影)。您仍然可以修改这些图像,例如设置它们的tintColors或完全更改图像。

不幸的是,现在还有两个额外的问题:

  1. 如果您的编辑风格是none,也可以使用none,即它可以是选择控件(空点/圆圈)。如果不使用实际的editingStyle和UITableView本身,这两种用法似乎是不可能区分的。
  2. 点击删除控件后,它的图像将被来自苹果的原始控件所取代。使用/设置UIImageView的突出显示图像属性也没有帮助。在UITableViewCellEditControl中似乎存在一些潜在的逻辑,它将隐式地将图像重置为原始图像。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46361103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档