将子视图大小调整为Superview框架

时间:2013-09-06 14:43:40

标签: ios objective-c uiview

我正在尝试理解以下问题。

我创建了一个类似的视图:

UIView *subNavigation = [[UIView alloc] initWithFrame:CGRectMake(0.0 0.0, 0.0, 70.0)];

之后我正在循环中向该子导航视图添加按钮,但我不想立即显示按钮:

for (int i = 0; i < 5; i++) {
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(leftOrigin, 0.0, 145.8, MENU_BUTTON_HEIGHT);
    leftOrigin += 145.8;

    [button setBackgroundColor:[UIColor whiteColor]];
    [button setTitle:@"Button Content" forState:UIControlStateNormal];
    [button setTitleColor:[UIColor yellowColor] forState:UIControlStateNormal];
    [button setTitleColor:[UIColor greenColor] forState:UIControlStateHighlighted];

    [button setTag:i];

    [subNavigation addSubview:button];

}

因此创建的subNavigation的宽度为0.0。当我添加subNavigation时我不想看到按钮,但我确实如此。如何使所有子视图适应其超视图的帧宽/高度?

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:3)

如果您的唯一目的是保持其子视图隐藏,我不会乱用superview的框架。相反,我建议你使用[subNavigation setHidden:YES];。这也将隐藏其子视图。

如果你坚持这种方法,我建议你按照@rokjarc在评论中所说并在超视图的界限上工作。您还应该研究剪切subNavigation的子视图。

[subNavigation setClipsToBounds:YES];