【问题标题】:How to make uiscrollview only vertical scrolling for ios?如何让 uiscrollview 只为 ios 垂直滚动?
【发布时间】:2015-08-09 14:05:15
【问题描述】:

我正在尝试使用这个tutorial linkscrollview 中创建layout

并得到如下结果link

我们将不胜感激任何建议或教程链接。它只需要垂直滚动

【问题讨论】:

  • 我看不到你的第二个视频。并尝试在这里发布问题,而不是引导我们到其他链接
  • 滚动视图的滚动取决于它的 contentSize。
  • 我认为您的 UIScrollView 宽度大于屏幕宽度,这就是水平滚动发生的原因。尝试使屏幕具有精确的宽度。
  • 只需使用其superview 制作滚动视图的内容视图equalwidth
  • 是的,我做到了,等宽,等高,低优先级...看起来像 poltergeist,但真的知道这是一个小问题(((

标签: ios objective-c ios8 uiscrollview autolayout


【解决方案1】:

我确信一定有其他方法可以做到这一点,但快速解决方法是:

1.) 在 Storyborad 中的 ContentView 上创建宽度约束。

2.) IBOutlet 那个 widthContraint 并将其值设置为 viewDidLoad 中的视图框架宽度。

假设约束出口的名称是 contentViewWidthContraint。

contentViewWidthContraint.constant = self.view.bounds.size.width;

如果 Scrollview 已经具有与 superview 的 Equal width 约束,则 Storyboard 的另一种替代方法是将 Contentview 宽度固定为来自情节提要或 Scrollview 的视图宽度。将 Contentview 中的“等宽”约束添加到 self.view 或 Scrollview(如果是滚动视图,则已经具有宽度约束)

【讨论】:

  • 我试过这个,它似乎可以解决它。但是 - 在 Xcode 10 中有一个复选框可以启用Safe Area Relative Margins。如果未选中,我的 UITextView 之一比视图更宽,导致它可以垂直和水平滚动。然而,检查它,将滚动视图限制为仅垂直。
【解决方案2】:

您是否将“ContentView”宽度设置为与滚动视图宽度相匹配?我遇到了同样的问题,我用“Equal Widths”修复了。

"Equal Widths" 将告诉您的“ContentView”使用与“Scroll View”相同的宽度,如果您正确设置了约束,它应该适合屏幕。

您可以在故事板上轻松完成此操作。

  1. 右键单击(重要!!!)从“ContentView”拖放到“ScrollView”

  2. 松开点击,会弹出一个菜单提示,选择“等宽”。

这应该可以解决您在 Storyboard 编辑器中使用带有 AutoLayout 的滚动视图的问题。

您可以找到完整的教程如何使用带有 Autolayout 和 Storyboard 的 ScrollView here

我希望这对你有用:)

【讨论】:

  • 这个答案对我有帮助的事情是将我的标签嵌入到视图中并尝试让滚动视图与该单个视图一起工作。
【解决方案3】:

在情节提要中,将 UIScrollView 中包含的元素的宽度设置为等于此 UIScrollView 的宽度(通过选择所有元素和在情节提要左侧面板中保持的 UIScrollView,然后设置“等宽”约束在故事板底部的“Pin”下)。仅将元素的右侧固定到 UIScrollView 的右侧是行不通的,因为它会将其“显示视图”的大小调整为最大元素的宽度,如果这小于 UIScrollView 的宽度,所有元素都会只是看起来与它的左侧对齐。

【讨论】:

    【解决方案4】:

    还有另一种可能提供非常好的结果。

    您可以标记一个复选框:

    O 以编程方式:

    scrollView.alwaysBounceVertical = true
    

    【讨论】:

      【解决方案5】:

      尝试将其宽度设置为 0,高度等于内容大小,如下所示:

      self.scrollView.contentSize = CGSizeMake(0, self.scrollView.contentSize.height);
      

      这将按您的意愿工作。试试看,看看是否仍然遇到任何问题。

      【讨论】:

      • 能否请您发布与滚动视图相关的代码?
      • 全部在情节提要中使用约束设计
      • 1.常用截图链接 2. 对于scrollview和contentview链接相同 3. Contentview到SuperView的宽度和高度相等,但高度优先级低
      【解决方案6】:

      要禁用水平滚动,您可以在-(void)scrollViewDidScroll 方法中设置内容大小。

      [self.scrollView setContentOffset: CGPointMake(0, self.scrollView.contentOffset.y)];
      self.scrollView.directionalLockEnabled = YES;
      

      【讨论】:

        【解决方案7】:

        这是因为滚动视图不知道你的内容应该在哪里结束。

        但是,当您的滚动视图中的至少一个项目的“尾随空间”约束附加到滚动视图之外的视图(通常是滚动视图所在的视图或更高级别的某个其他视图时,“知道" 它的宽度) - 滚动视图会自动了解您想要的宽度并且不会水平滚动(除非尾随约束意味着您的内容位于屏幕之外)。

        如果滚动视图内的所有项目都将它们的“尾随空间”约束相互连接或连接到滚动视图外的视图,那就更好了。但不是滚动视图本身。

        无需额外的代码或额外的约束即可工作。

        【讨论】:

          【解决方案8】:

          UIScrollView 约束设置为如下代码,因此它将占据整个屏幕。不超过屏幕大小。

          Leading Space = 0 from mainView
          Top Space = 0 from mainView
          Bottom Space = 0 from mainView 
          Trailing Space = 0 from mainView
          

          【讨论】:

          • @AlexeyZakevich,能否请您添加设置 UIScrollView 布局的屏幕截图?如果您没有任何问题。
          • @AlexeyZakevich,将相同的布局约束应用于 ScrollView 内的 UIView。
          【解决方案9】:

          您需要将 UIScrollView 的宽度设置为等于或小于父视图的宽度。两种方法:

          1) 您可以通过布局约束在 Storyboard 中执行此操作

          2) 您可以通过编程方式执行此操作:

          self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width, self.scrollView.contentSize.height);
          

          【讨论】:

          • 尝试第一个和第二个,但仍然面临问题
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-18
          相关资源
          最近更新 更多