我有一个自定义的UIView子类实例headerView,将其放在UIWebView的scrollView中。初始化时,我将此视图的背景色设置为白色:

self.backgroundColor = [UIColor whiteColor];

这就是我将其放在webView的scrollView上的方式:
    webView.scrollView.contentInset = UIEdgeInsetsMake(headerView.bounds.size.height, 0, 0, 0);

    CGRect frame = headerView.frame;
    frame.origin.y -= headerView.bounds.size.height;
    headerView.frame = frame;
    //webView.scrollView.backgroundColor = [UIColor whiteColor];

    [webView.scrollView addSubview:headerView];

如果取消注释该行,则headerView的背景为白色。但是,如果我发表评论,则背景颜色与webView中scrollView的背景颜色相同。因此,在其init方法中更改视图的背景颜色似乎不起作用。

最佳答案

我发现了导致此问题的错误。我正在这样初始化我的视图:

self = [super initWithFrame:CGRectZero];

然后设置框架:
frame = self.frame;
frame.size.height = _subjectView.bottom;
self.frame = frame;

self.backgroundColor = [UIColor whiteColor];
self.opaque = YES;

当我在init方法中添加此方法时:
self.clipsToBounds = YES;

子视图甚至都没有显示。所以我的 super 视图的框架宽度为0,但是子视图仍在其外部显示,因为它们的框架是正常的,并且clipsToBounds默认为NO。通过添加这一行来证明
frame.size.width = SCREEN_WIDTH;

它开始工作。

关于ios - UIWebView backgroundColor上的UIView不变,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14590318/

10-14 22:35