我在scrollview中有一个contentview以及其他一些视图,scrollview高度将根据contentview高度而改变,contentview的高度由其子视图的高度决定。
我正在以编程方式向contentview添加两个子视图。
@RequestMapping(value="/abc", method = RequestMethod.POST, consumes = "application/pdf")
public ResponseEntity<String> uploadFile(@RequestBody MultipartFile file) {
System.out.println("Inside Controller");
return new ResponseEntity<>("true", HttpStatus.CREATED);
}
问题是contentView高度没有按照子视图增长。 因此,我的滚动视图不会增长。
当我添加第二个子视图时,我不想指定y = 210 ,我希望它的位置可以通过空间约束来计算 两个孩子的观点,有可能吗?
如何根据子视图使内容视图高度增加?
答案 0 :(得分:1)
当我需要可滚动视图时我会做什么:
我在层次结构中添加scrollView
并使用autolayout正确布局它,例如,如果它应该涵盖view
的整个viewController
:
scrollView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
scrollView.leftAnchor.constraint(equalTo: self.view.leftAnchor),
scrollView.rightAnchor.constraint(equalTo: self.view.rightAnchor),
scrollView.topAnchor.constraint(equalTo: self.view.topAnchor),
scrollView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
])
然后您需要向contentView
添加scrollView
并为其提供适当的布局约束,因此如果您希望在我上面开始的示例中可垂直滚动scrollView
,您需要遵循自动布局约束:
contentView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
// horizontal anchors of contentView are constrained to scrollView superview
// to prevent it from scrolling horizontally
contentView.leftAnchor.constraint(equalTo: self.view.leftAnchor),
contentView.rightAnchor.constraint(equalTo: self.view.rightAnchor),
// but vertical anchors of contentView are constrained to
// scrollView to allow scrolling
contentView.topAnchor.constraint(equalTo: scrollView.topAnchor),
contentView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor),
])
请注意,我将leftAnchor
的{{1}}和rightAnchor
限制为contentView
而不是self.view
,以使其具有固定宽度。但是,top和bottom锚点被约束到scrollView,因此当scrollView
需要更多空间时,它们会被展开和滚动。
现在您添加了contentView
您想要的所有内容,并使用自动布局进行布局,就像contentView
是一个无限高度的视图一样 - contentView
将通过滚动来完整呈现它。在您的情况下,我认为您可以使用scrollView
来布置这两个视图。但是,UIStackView
的帧将使用自动布局计算,因此我不认为您可以依赖直接设置帧 - 因此我也使用约束来设置它们的高度(宽度将被拉伸通过stackView):
CustomView