禁用UIScrollView水平滚动的最佳方法是什么?

时间:2017-12-04 10:01:43

标签: objective-c uiscrollview horizontal-scrolling contentsize

UIScrollView中,我的内容高度和宽度大于scrollview的大小。所以基本上它可以水平和垂直滚动。我想要的只是垂直滚动,我使用UIButton使用下面的代码水平滚动。

 [scrlViewQuestion setContentOffset:CGPointMake(questionWidth, 0) animated:YES];

防止水平滚动视图,可以设置scrollview内容宽度小于滚动视图大小,但在我的情况下,scrollview内容宽度大于其大小?那么解决这个问题的最佳方法是什么?

6 个答案:

答案 0 :(得分:2)

内容UIView的宽度例如应等于UIScrollView的超级视图的宽度,而不是UIScrollView本身。

enter image description here

答案 1 :(得分:1)

使用此视图层次结构和这些约束

enter image description here


图像的逐步说明

将ScrollView放置在视图(OuterView)的内部。

将带有内容(InnerView)的视图放置在ScrollView内

将ScrollViews 4侧对齐到OuterViews 4侧

ScrollView.leading = OuterView.leading
ScrollView.trailing = OuterView.trailing
ScrollView.top = OuterView.top
ScrollView.bottom = OuterView.bottom

将InnerViews 4侧面与ScrollViews 4侧面对齐

InnerView.leading = ScrollView.leading
InnerView.trailing = ScrollView.trailing
InnerView.top = ScrollView.top
InnerView.bottom = ScrollView.bottom

设置内部视图的宽度和高度等于外部视图的宽度,滚动视图的宽度。

InnerView.width = OuterView.width

Source

答案 2 :(得分:0)

将滚动视图的contentSize设置为屏幕宽度和可滚动内容的实际高度。将contentInsettopbottom的{​​{1}}设置为零。对于right上的内容插入,请始终选择当前要显示的位置的否定left坐标。

E.g。如果您的屏幕宽度为320磅,并且您希望显示固定为x的水平滚动内容,但允许垂直滚动:

x

答案 3 :(得分:0)

您可以在故事板中执行此操作。

enter image description here

Show Horizontal Indicator的Identity Inspector中禁用Scroll View标签。它会禁用水平滚动。

答案 4 :(得分:0)

快速4.设置代理人

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if scrollView.contentOffset.x != 0 {
        scrollView.contentOffset.x = 0
    }
}

答案 5 :(得分:0)

SWIFT 5 首先,您应该创建一个委托类或使用LayoutMirroring.enabled: Qt.application.layoutDirection == Qt.RightToLeft LayoutMirroring.childrenInherit: Qt.application.layoutDirection == Qt.RightToLeft 扩展视图控件,然后,您应该使用UIScrollViewDelegate func检查内容偏移量并使用该功能禁用它: 这是示例代码:

scrollViewDidScroll(_:)