用户登录
用户注册

分享至

从 UIScrollView Swift 禁用水平滚动

  • 作者: 你在逗我85667409
  • 来源: 51数据库
  • 2022-10-21

问题描述

滚动视图

我有一个 UIScrollView,带有约束 left: 0, top: 0, right: 0, bottom: 0

I have a UIScrollView, with constraints left: 0, top: 0, right: 0, bottom: 0

内部滚动视图

在这个 UIScrollView 的顶部是一个 UIImageView 约束 left: 0, top: 0, right: 0, height: 200

At the top of this UIScrollView is a UIImageView with constraints left: 0, top: 0, right: 0, height: 200

在下面我有一个 UITextView 约束 left: 0, top: 0, right: 0, bottom: 0

Underneath this I have a UITextView with constraints left: 0, top: 0, right: 0, bottom: 0

这意味着 UITextView 将根据其内容调整大小,我为 UITextView<将 scrollingEnabled 设置为 false/代码>.

This means the UITextView will resize with respect to its content, and I set the scrollingEnabled to false for the UITextView.

所以,当我跑步时,它几乎完美运行.

So, when I run, it almost works perfectly.

其中一个问题是 UIImageView 占用的空间比实际屏幕宽度多 10%.因此,启用了水平滚动.

The one problem is the UIImageView takes up about 10% more than the actual screen width. Hence, horizontal scrolling is enabled.

我已尝试添加行

imageView.frame = CGRect(0, 0, screenSize.width, 200)
scrlView.contentSize.width = screenSize.width

但这没有区别.我仍然可以水平滚动,并且图像视图仍然比实际屏幕宽度多出 10% 左右.

but this makes no difference. I can still scroll horizontally and the Image View still takes up around 10% more than the actual screen width.

注意,我没有在情节提要中设置 imageView 屏幕宽度,仅以编程方式设置.

Note, I have not set imageView screen width in storyboard, only programatically.

有什么想法吗?

推荐答案

这样,

Swift 4.0

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

而且,你可以设置这个属性:

And, you can set this property:

scrollImg.isDirectionalLockEnabled = true
软件
前端设计
程序设计
Java相关