我只需要找出有关iOS视图和布局的几件事情。我刚刚结束了应用程序,我必须创建一个显示测试的控制器。除了一件事情,这很容易。有两种类型的问题A和B.一个问题有4个答案变种,B个问题没有。所以我不得不根据问题类型生成代码中的所有布局。我已经通过创建方法update
完成了我在那里重建我的视图。动态视图控制器
- (void)update {
for (UIView *v in self.view.subviews) {
[v removeFromSuperview];
}
//label initialization with frame calculation
UILabel *questionLabel = [[UILabel alloc]initWithFrame:CGRectMake(PADDING, PADDING, size.width - 4 * PADDING, 0)];
[questionLabel sizeToFit];
[self.view addSubview:questionContainerView];
//If type A
if ([self.question.questionType isEqualToString:@"A"]) {
for (Answer *a in self.question.answers) {
UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(PADDING, offset, size.width - 2 * PADDING, 30 + PADDING)];
//customization
[self.view addSubview:button];
offset += button.frame.size.height + MARGIN_BOTTOM;
}
//if B type
} else {
UITextField *answerField = [[UITextField alloc] initWithFrame:CGRectMake(PADDING, PADDING, view.frame.size.width - 2*PADDING, view.frame.size.height - 2 * PADDING)];
[view addSubview:answerField];
offset += view.frame.size.height + MARGIN_BOTTOM;
}
UIView *lastView = [[self.view subviews]lastObject];
self.scrollView.contentSize = CGSizeMake(size.width, lastView.frame.origin.y + lastView.frame.size.height + 10);
}
而毕竟我认为它不可能如此复杂。请帮助找出我该如何正确地做,因为我确信我的方法不是最佳的。也许创建自定义布局。我的意思是如何避免设置框架,并简单地添加正确位置的视图。