在向"容器"UIView中添加动态数量的子UIView元素时,我的UI遇到了问题。基本上,我需要能够动态调整容器视图的大小(下面是self.containerAView(,以适应所有添加到其中的"子"子视图的高度。到目前为止,我所做的所有重置框架的尝试都没有成功。值得注意的是,初始大小是在*.xib文件中定义的,该文件最初加载的containerAView(UIView(元素的初始大小为300x200(宽x高(。
- (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???
}
任何关于动态调整容器视图大小的帮助都将不胜感激,因为我还无法找到任何解决方案。
一种可能是最新方法的方法是在接口生成器中向containerview添加4个自动布局约束。
添加四个约束:x=0,y=0,width=300&高度=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
您似乎试图更改容器框架的高度。框架有原点和大小。尝试操作这些属性:
self.containerView.frame.origin.x
self.containerView.frame.origin.y
self.containerView.frame.size.height
self.containerView.frame.size.width