在将动态数量的子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???
}
任何有关动态调整容器视图大小的帮助都会非常感激,因为我还没有找到任何解决方案。
答案 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