2

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

self.backgroundColor = [UIColor whiteColor];

这就是我将它放在 webView 的滚动视图上的方式:

    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 方法中更改视图的背景颜色似乎不起作用。

4

2 回答 2

2

我发现了一个导致这个问题的错误。我是这样开始我的观点的:

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;

子视图甚至没有显示。所以我的超级视图的帧宽度为 0,但子视图仍然显示在它之外,因为它们的帧是正常的,并且默认情况下 clipsToBounds 是 NO。通过添加这一行证明了

frame.size.width = SCREEN_WIDTH;

它开始起作用了。

于 2013-01-30T11:37:01.037 回答
1

在您的子类中,您是否确保其不透明?

    self.view.opaque = YES;
于 2013-01-30T10:56:29.660 回答