2 个回答

可以修改,通过 kvc 或者 递归查找子视图 方式均可以实现该目的。


@interface UIView (FindView)

- (UIView *)findViewWithClassName:(NSString *)aName;

@end


@implementation UIView (FindView)

- (UIView *)findViewWithClassName:(NSString *)aName {
    NSLog(@"%@", self);
    if([[[self class] description] isEqualToString:aName])
        return self;

    for(UIView *subview in self.subviews) {
        UIView *huntedSubview = [subview findViewWithClassName:aName];

        if(huntedSubview != nil)
            return huntedSubview;
    }
    return nil;
}

@end
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *prefix    = @"UITableViewCell";
    NSString *suffix    = @"EditControl";
    NSString *className = [prefix stringByAppendingString:suffix];
    UIView *view = [cell findViewWithClassName:className];
    view.backgroundColor = [UIColor redColor];
    NSLog(@"%@", view);
}
新手上路,请多包涵

该区域显示的cell的背景色,注意:不是contentView的背景色!因此只需修改cell的背景色即可。还需要注意的是:如果cell是通过xib或者storeboard创建,cell中的背景色选择default时实际为白色,选择clearColor时显示的是tableView的背景色。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题