在UIScrollView的底部UIButtons不起作用
我在故事板中创build了一个UIScrollView,并在UIScrollView中的容器视图中添加了12个UIButton。
当在iPhone 5s模拟器上运行时,可以在屏幕上看到9个button,其余button只有在向下滚动时才能看到。
屏幕上最初可以看到的9个button可以与之交互。 然而,滚动视图底部的3个button(必须滚动才能看到)不能与之交互。
我在iPhone 6模拟器上运行应用程序,该模拟器显示屏幕上的所有12个button,而不必滚动,底部的3个button可以工作。
我正在使用自动布局。
我试图摆弄UIScrollView的contentSize,并没有帮助。
看来你需要增加容器视图的框架高度。 scrollView的contentSize
只影响它的滚动方式,这在这里是不相关的。
如果该button位于容器视图之外,它仍将显示出来。 但是,它不能响应任何触摸事件。
对我来说,这只是取消选中该视图控制器的故事板中的checkboxAdjust Scroll View Insets 。
PS:上面的答案没有为我工作。
在使用自动布局的情节提要中使用scrollview。 通常使用scrollview中的内容视图进行设置,该视图将包含所有其他视图(例如button,标签等),内容视图通常设置为具有相等的高度和相等的宽度。
为了让你的内容视图扩大高度,你需要添加一个高度约束,然后将它分配给一个sockets,这样你就可以很容易地在你的代码中操作它的值。 然后将内容视图的高度约束优先级设置为1000(“必需”),并将内容视图的“等宽度:视图”约束优先级设置为750(高)。
将容器中的所有子视图添加到ScrollView。 并隐藏容器。 确保容器(scrollView的ContainerView)也应该是scrollView的子视图。
另一个选项是降低Content View.Center Y约束的优先级。
在Xcode 9中,我根据需要布置了contentView,并在iPhone 5视图下方扩展了button。我dynamic调整了视图控制器中的scrollView.contentSize.height和contentView.frame的大小。 scrollView为我滚动,但我仍然无法selectbutton,并在故事板中看到警告。
一旦我降低了ContentView的Center Y Alignment Constraint的优先级,Storyboard中的警告就消失了,我可以滚动到scrollView的底部并selectiPhone 5模拟器上的button。
注意:我仍在检查设备大小,并调整viewWillLayoutSubviews()中的小设备的scrollView.contentSize.height值。
override func viewWillLayoutSubviews() { super.viewWillLayoutSubviews() scrollView.contentSize.height = (UIDevice.current.isSmallDevice) ? 560 : contentView.frame.size.height }
(UIDevice.current.isSmallDevice是对UIDevice扩展的调用,返回由屏幕大小决定的布尔值)