- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在实现 UIStackView
时遇到了一些麻烦在UIScrollView
.我的 View 层次结构如下所示:
┌─────────────────────────────┐
│ViewController │
│┌───────────────────────────┐│
││Spacer UIView ││
│└───────────────────────────┘│
│┌───────────────────────────┐│
││ UIScrollView ││
││┌─────────────────────────┐││
│││UIStackView │││
│││ │││
│││ │││
││└─────────────────────────┘││
│└───────────────────────────┘│
│┌───────────────────────────┐│
││Spacer UIView ││
│└───────────────────────────┘│
│┌───────────────────────────┐│
││UIView with other content ││
││height: 300 ││
│└───────────────────────────┘│
└─────────────────────────────┘
我有间隔 View ,如果内容比屏幕的整个高度短,则内容会垂直居中。我布局 NSLayoutConstraints
如下 V:|-[spacer1]-[scrollview]-[spacer2(==spacer1)]-[footerView]-|
UIStackView 得到了 UIViews
每个高度为 50(基本上是一个有行的表格)。
到目前为止一切顺利。一旦我的堆栈 View 的行数多于“房间”,我就会收到源源不断的错误消息,指出必须打破约束(单个行的高度)。错误消息不断地来回出现新的对象内存 ID——它基本上永远不会完成。我假设我的 ScrollView 的内容高度设置不正确。
在我的 viewDidLoad
我这样设置了 spacer 和 scrollview:
let spacer1 = UIView()
spacer1.translatesAutoresizingMaskIntoConstraints = false
self.view.addSubview(spacerView1)
spacerView1.widthAnchor.constraint(equalTo: self.view.widthAnchor).isActive = true
let scroll = UIScrollView()
scroll.translatesAutoresizingMaskIntoConstraints = false
scroll.showsHorizontalScrollIndicator = false
self.view.addSubview(scroll)
scroll.widthAnchor.constraint(equalTo: self.view.widthAnchor).isActive = true
let stack = UIStackView()
stack.axis = .vertical
stack.translatesAutoresizingMaskIntoConstraints = false
stack.alignment = .center
stack.spacing = 2
stack.distribution = .equalSpacing
scroll.addSubview(stack)
stack.topAnchor.constraint(equalTo: scroll.topAnchor).isActive = true
stack.leftAnchor.constraint(equalTo: scroll.leftAnchor).isActive = true
stack.rightAnchor.constraint(equalTo: scroll.rightAnchor).isActive = true
stack.bottomAnchor.constraint(equalTo: scroll.bottomAnchor).isActive = true
stack.widthAnchor.constraint(equalTo: scroll.widthAnchor).isActive = true
stack.heightAnchor.constraint(equalTo: scroll.heightAnchor).isActive = true
在从另一个类调用的另一个方法中,我然后添加 UIViews
到 UIStackView
只需像这样添加它们:stack.addArrangedSubview(rowView)
.
将 UIView 添加到堆栈 View 后,我使用
调整 ScrollView 的大小extension UIScrollView {
func resizeScrollViewContentSize() {
var contentRect = CGRect.zero
for view in self.subviews {
contentRect = contentRect.union(view.frame)
}
self.contentSize = contentRect.size
}
}
它给出了约束破坏错误。
如果我删除堆栈 View 的高度约束,它就会崩溃,调试 View 层次结构会告诉我 UIStackView 的高度和垂直位置不明确。我也尝试简单地设置 scroll.contentSize = stack.frame.size
一旦所有行都添加到堆栈 View 中。但这也没有用。我还尝试先将行添加到堆栈 View ,然后将堆栈 View 添加到 ScrollView 。这样堆栈 View 应该知道它的大小要求,但这也不起作用。
如前所述,只要行的总高度小于可能的空间,这种方法就可以正常工作。只要我再添加一行或在屏幕尺寸较小的设备上执行应用程序,我就会得到 Will attempt to recover by breaking constraint
.
<NSLayoutConstraint:0x600000b29fe0 MyApp.RowView:0x7fc571e840f0.height == 50 (active)>
基本上是 UIScrollView
的滚动功能不适用于我的堆栈 View 。如何强制 ScrollView 重新计算其内容所需的高度。
我错过了什么或做错了什么?
谢谢
最佳答案
要解决这个问题,stackView 的高度必须是动态的。尝试将高度约束优先级设置为750, subview 布局后,一切正常
关于ios - UIScrollView 中的 UIStackView 不滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57197545/
如果附加了 'not-scroll' 类,我希望我的 body 不滚动,否则它应该正常工作。 我已经搜索这个问题两天了,但找不到任何适合我的解决方案。 我想要的是向 body 添加一个 class,并
我发现似乎是 iOS Safari 中的错误(我正在 iOS 8 上进行测试)。当绝对定位的 iFrame 漂浮在一段可滚动内容上方时,滚动 iFrame 也会滚动下面的内容。以下 HTML (ava
我有以下代码来显示一系列投资组合图片,这些图片以 SVG 格式存储在滚动 div 中: 在 Safari 中滚动使用两根手指或鼠标滚轮当光标位于 SVG 之一上时不起作用。 该页
我想用 javascript 做的是: 一旦你向下滚动页面,将#sidebar-box-fixed 的位置从 position: relative; 更改为定位:固定;。改回position:rela
我对 Elasticsearch 的滚动功能有点困惑。在 elasticsearch 中,每当用户在结果集上滚动时,是否可以每次调用搜索 API?来自文档 "search_type" => "scan
我试图做到这一点,以便当我向上或向下滚动页面时,它会运行不同的相应功能。我发现了一个类似的问题here但我已经尝试了他们的答案并且没有运气。 注意:此页面没有正常显示的滚动条。没有地方可以滚动。 bo
(C语言,GTK库) 在我的表单上,我有一个 GtkDrawingArea 小部件,我在上面使用 Cairo 绘制 GdkPixbufs(从文件加载)。我想要完成的是能够在窗口大小保持固定的情况下使用
最近我一直在尝试创建一个拉到(刷新,加载更多)swiftUI ScrollView !!,灵感来自 https://cocoapods.org/pods/SwiftPullToRefresh 我正在努
我正在开发一个应用程序,其中有两个带有可放置区域的列表和一个带有可拖动项目的侧面菜单。 当我滚动屏幕时,项目的位置困惑。 我试图在谷歌上寻找一些东西,最后得到了这个问题:jQuery draggabl
我在 UIWebView 中加载了一个 HTML 表单,而我的 UIWebView 恰好从 View 的中间开始并扩展。我必须锁定此 webView 不滚动并将其放在 ScrollView 之上以允许
如何在每个元素而不是整个元素上应用淡入淡出(与其高度相比)? HTML: CSS: * { padding: 0; margin: 0; box-sizing: border
我想使用带有垂直轴的 PageView 并使用鼠标滚动在页面之间移动,但是当我使用鼠标滚动时页面不滚动...仅页面单击并向上/向下滑动时滚动。 有什么办法吗? 我想保留属性 pageSnapping:
我制作这个程序是为了好玩,但我被卡住了,因为程序在屏幕外运行。如何在不完全更改代码的情况下实现滚动条。 public static void main(String args[]) throws IO
我想使用带有垂直轴的 PageView 并使用鼠标滚动在页面之间移动,但是当我使用鼠标滚动时页面不滚动...仅页面单击并向上/向下滑动时滚动。 有什么办法吗? 我想保留属性 pageSnapping:
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
使用 jquery 技术从 css-tricks.com 获得滚动/跟随侧边栏,如果您不知道我在说什么,这里是代码: $(function() { var $sidebar = $
我是 jQuery Mobile 新手。我需要向我的应用程序添加 Facebook 滑动面板功能。 我经历了 sliding menu panel ,它工作正常,但我在菜单面板中的内容超出了窗口大小,
有没有办法在 js 或 jQuery 或任何其他工具中检测 ctrl + 滚动。我正在尝试执行一些动态布局代码,我需要检测不同分辨率下的屏幕宽度,我通过使用 setTimeout() 的计时器实现了这
我有一部分html代码:
我想控制 RichTextBox 滚动,但在控件中找不到任何方法来执行此操作。 这样做的原因是我希望当鼠标光标位于 RichTextBox 控件上时鼠标滚轮滚动有效(它没有事件焦点:鼠标滚轮事件由表单
我是一名优秀的程序员,十分优秀!