代码之家  ›  专栏  ›  技术社区  ›  user6631314

IOS/Objective-C:子视图的子视图不显示

  •  0
  • user6631314  · 技术社区  · 6 年前

    我的代码:

    //Make background box:  
        CGRect screenRect = [[UIScreen mainScreen] bounds];
        CGFloat screenWidth = screenRect.size.width;
        CGFloat graphWidth = screenWidth-40;
        CGFloat graphHeight = 160;
          CGRect graphBounds =CGRectMake(20, 200, graphWidth, graphHeight);
        float tableStartY = graphBounds.origin.y;
    
        UIView *graphBox = [[UIView alloc] initWithFrame:graphBounds];
        graphBox.backgroundColor = [UIColor colorWithRed:200.0/255.0 green:200.0/255.0 blue:200.0/255.0 alpha:0.2]; graphBox.layer.borderWidth = 1;
        graphBox.layer.borderColor = [UIColor blueColor].CGColor;
    
    //Make Bar
    
        CGFloat barWidth = 20;
        CGFloat barHeight = 100;
        CGRect aBar = CGRectMake(20, tableStartY+1, barWidth, barHeight);
        UIView *barView = [[UIView alloc] initWithFrame:aBar];
       barView.backgroundColor = [UIColor blueColor];
        barView.layer.borderWidth = 1;
        barView.layer.borderColor = [UIColor redColor].CGColor;
    
       // [graphBox addSubview:barView];
        [self.view addSubview: graphBox];
    

    提前谢谢你的建议。

    2 回复  |  直到 6 年前
        1
  •  1
  •   il3v    6 年前

    如果我正确理解你需要做什么,你应该

    CGRect aBar = CGRectMake(20, tableStartY+1, barWidth, barHeight);
    

    具有

    CGRect aBar = CGRectMake(20, 1, barWidth, barHeight);
    

    [编辑:显然取消对addSubview行的注释]

        2
  •  1
  •   Ian MacDonald    6 年前

    也许这是你发布的代码中的一个意外,但是你已经特别注释了 barView

       // [graphBox addSubview:barView];
    

    另外,作为 another answer 列表,如果要添加 条形图 graphBox . 如果你把它添加到 self.view 相反,你的偏移量是正确的。

    CGRect aBar = CGRectMake(20, 1, barWidth, barHeight);
    // ...
    [graphBox addSubview:barView];
    

    CGRect aBar = CGRectMake(20, tableStartY+1, barWidth, barHeight);
    // ...
    [self.view addSubview: graphBox];
    [self.view addSubview:barView];
    

    注意,在第二个选项中,获取 条形图 显示在 画框 因为他们是兄弟姐妹。