在iOS7中,分组的UITableView的背景颜色不会透明

时间:2013-09-22 13:17:19

标签: uitableview transparency ios7 xcode5

我正在开发一款适用于iOS 6的应用程序。对于iOS7,该应用程序有几个布局和一般的少量外观问题。一个是无法将分组的tableview的背景颜色设置为透明。 Heres是我的代码,它不再起作用了

    tableForDetails = [[UITableView alloc]initWithFrame:CGRectMake(0, yAxisTable, 320, 150) style:UITableViewStyleGrouped];
    UIColor *backGroundColor = [UIColor clearColor];
    UIView *bview = [[UIView alloc]init];
    [bview setBackgroundColor:backGroundColor];
    [tableForDetails setBackgroundView:bview];

非常感谢帮助。感谢

4 个答案:

答案 0 :(得分:4)

在iOS7中为分组的uiTableview设置背景透明度非常简单。解决方案比我原先想象的更简单。

[tableForDetails setBackgroundColor:[UIColor clearColor]];

或仅限半透明

[tableForDetails setBackgroundColor:[[UIColor alloc]initWithRed:1.0 green:1.0 blue:1.0 alpha:0.5]];

这对我来说很好。

答案 1 :(得分:0)

我用它修理了它:

tableView.backgroundView = UIView.new;

答案 2 :(得分:0)

我在超类中对Apple组件进行了任何改进。以下升级适用于BasicTableView.m,它扩展了UITableView

1)覆盖setBackgroundColor以使用iOS 7及更高版本,同时保持与iOS 6和5的向后兼容性。
2)覆盖initWithCoder:initWithFrame:style:以将背景颜色初始化为默认的透明背景

- (id) initWithCoder:(NSCoder *)decoder
{
    self = [super initWithCoder:decoder];
    if (self) {
        [self setup];
    }

    return self;
}

- (id) initWithFrame:(CGRect)frame style:(UITableViewStyle)style
{
    self = [super initWithFrame:frame style:style];

    if (self) {
         [self setup];
    }

    return self;
}

- (void) setup
{
    //Set the BG color to clear color by default
    [self setBackgroundColor:[UIColor clearColor]];
}

- (void) setBackgroundColor:(UIColor *)backgroundColor
{
    if (self.style == UITableViewStyleGrouped) {
        if (majorSystemVersion() < 7) {
            UIView *tableBgView = [[UIView alloc] init];
            tableBgView.backgroundColor = backgroundColor;
            self.backgroundView = tableBgView;
        } else {
            [super setBackgroundColor:backgroundColor];
        }

    }
}

//majorSystemVersion() is defined elsewhere in a utility file
int majorSystemVersion(void) {
    NSString *systemVersion = [UIDevice currentDevice].systemVersion;
    NSArray *systemVersionComps = [systemVersion componentsSeparatedByString:@"."];
    NSString *majorVersion = [systemVersionComps objectAtIndex:0];

    return [majorVersion intValue];
}

答案 3 :(得分:-1)

UITableViewCell在iOS 7中默认为白色背景

将它放在你的cellforRowAtIndexPath

[cell setBackgroundColor:[UIColor clearColor]]