2

我正在开发一个应用程序,它在 iOS 6 上运行得非常好。在 iOS7 上,该应用程序有几个布局和一般的外观问题。一个是无法将分组表视图的背景颜色设置为透明。这是我的代码,它不再起作用了

    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

4 回答 4

4

在 iOS7 中为分组的 uiTableview 设置背景透明度真的很容易。解决方案比我最初想象的还要简单。

[tableForDetails setBackgroundColor:[UIColor clearColor]];

或仅半透明

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

这对我来说很好。

于 2013-10-01T13:06:01.193 回答
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];
}
于 2015-01-09T20:24:18.353 回答
0

我用这个修复了它:

tableView.backgroundView = UIView.new;
于 2013-11-26T13:00:26.407 回答
-1

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

把它放在你的 cellforRowAtIndexPath

[单元格设置背景颜色:[UIColor clearColor]]

于 2013-11-14T07:00:25.003 回答