动态调整大小"容器"的UIView

时间:2014-04-30 22:22:29

标签: ios objective-c user-interface uiview

在将动态数量的子UIView元素添加到"容器中时,我遇到了与UI有关的问题" UIView的。基本上我需要能够动态调整容器视图的大小(下面的self.containerAView)以适应所有"孩子的高度#34;已添加到其中的子视图。到目前为止,我所做的所有重置框架的尝试都没有奏效。值得注意的是,初始大小是在* .xib文件中定义的,该文件最初加载了初始大小为300x200(w x h)的containerAView(UIView)元素。

- (void)drawScreen {
    // handle all screen presentation initialization here
    // programatically create a dynamic number of child views to add to the container view
    for (int i = 0; i < 3; i++) {
        int childViewHeight = 60;
         int childViewWidth = 300;

        UIView *childView = [[UIView alloc] initWithFrame:CGRectMake(0, (i * childViewHeight) + (i * 10), childViewWidth, childViewHeight)];
    childView.backgroundColor = [UIColor blackColor];

    [self.containerAView addSubview:childView];
    }

    // build a mapping dictionary for all child elements in the container view
    NSMutableDictionary *containerASubViewDictionary = [[NSMutableDictionary alloc] init];
    for (int i = 0; i < [self.containerAView.subviews count]; i++) {
        [containerASubViewDictionary setValue:self.containerAView.subviews[i] forKey:[NSString stringWithFormat:@"childView%d", i]];
    }

    // WHAT TO ADD HERE TO HANDLE RESIZING self.containerAView height???
}

任何有关动态调整容器视图大小的帮助都会非常感激,因为我还没有找到任何解决方案。

2 个答案:

答案 0 :(得分:4)

一种可能是最新方法的方法是在界面构建器中向containerview添加4个自动布局约束。

添加四个约束:x = 0,y = 0,width = 300&amp;身高= 200

现在单击界面构建器中的宽度约束以突出显示它,然后控制将其拖到.h文件中并为其命名,如containerWidth。

@property (strong, nonatomic) IBOutlet NSLayoutConstraint *containerWidth;

重复高度。

在.m文件中,您可以通过操纵约束来调整drawScreen方法中的高度和宽度。

self.containerWidth.constant = width; // your calculated new width
self.containerHeight.constant = height; // your calculated new height

答案 1 :(得分:0)

您似乎试图更改容器框架的高度。框架具有原点和尺寸。尝试操纵这些属性:

self.containerView.frame.origin.x
self.containerView.frame.origin.y
self.containerView.frame.size.height
self.containerView.frame.size.width