gpt4 book ai didi

ios - 当包含它的 UIScrollView 滚动时,是什么让 UIView 重新调整为默认值?

转载 作者:行者123 更新时间:2023-12-01 20:07:39 24 4
gpt4 key购买 nike

我做了一个 UIScrollView 并水平滚动。

在 UIScrollView 内部,一个 UIView 包含一个用于显示文本的 UILabel 和一个用于隐藏 View 的 UIButton。

View 的宽度随着用户更改标签中的文本而变化,而按钮保持其大小。

我想要 UIView 做的是在 UIScrollView 左右滚动时保持其大小。但是 UIView 在滚动时会恢复到原来的大小。

下图显示了 Storyboard的设置;默认情况下,两个矩形是 UIViews 和 UILabels,每个矩形都有一个“Label”文本。字母 X 是一个按钮。包含这两个的水平区域是 UIScrollView。

enter image description here

下一个是我在模拟器中运行应用程序的场景。我以编程方式更改了这些 UIView 的边框。这些文本是从我制作的菜单中选择的,UIViews 的宽度随着 UILabels 宽度的变化而变化。忽略为什么两个标签有相同的文字;我没有处理第二个 View 。即使只有一个 UIView,情况也是如此。

enter image description here

当我向右滚动 UIScrollView 时,就会出现问题。这些 UIView 的宽度会回到 Storyboard中设置的默认值。

enter image description here

选择菜单时调用下面的函数。对不起这些奇怪的变量名

//selectedTextPrim, selectedTextSecn: String()
//result1Text, result2Text: UILabel
//result1, result2: UIView
//result1XBtn, result2XBtn: UIButton
func processAddResult(){
result1Text.text = selectedTextPrim + " > " + selectedTextSecn
result1Text.sizeToFit()
result1.frame.size.width = result1Text.frame.size.width + 24
result1XBtn.frame.origin.x = result1Text.frame.maxX

result2.frame.origin.x = result1.frame.maxX + 8

result2Text.text = selectedTextPrim + " > " + selectedTextSecn
result2Text.sizeToFit()
result2.frame.size.width = result2Text.frame.size.width + 24
result2XBtn.frame.origin.x = result2Text.frame.maxX
// print("\(result1Text.frame.size.height)")
}

代码需要改吗?或者有没有办法通过在某处添加一些代码来管理这个?

最佳答案

您的 View 由自动布局约束定位。您可以直接设置框架(如您所做的那样),但下次系统执行布局传递时,自动布局将根据约束重置框架。

许多事情都可以触发布局传递。其中之一是更改 bounds的一种看法。 ScrollView 滚动的方式是改变它自己的bounds.origin .所以每次 ScrollView 滚动时,它都会触发一个布局传递。在这些布局过程中,您直接对 View 的 frame 所做的任何更改重置为由自动布局约束规定的框架。

在这种情况下,您似乎希望每个标签自动调整大小以适合其文本。自动布局可以自动执行此操作。如果您不对标签的大小设置任何其他限制,自动布局将使用标签的 intrinsicContentSize ,每次您设置标签的文本时,标签都会自动设置。

然后,您希望每个背景矩形自动围绕一个标签。您可以通过将矩形的边缘约束到标签的边缘来做到这一点(加上常量以提供填充)。然后自动布局将自动使矩形的框架跟随标签的框架。

如果你都做对了,仅限 您必须在代码中更改的是标签的文本。自动布局将负责调整标签和背景矩形的大小和重新定位。

你应该看“Taking Control of Auto Layout in Xcode 5” from WWDC 2013 .

关于ios - 当包含它的 UIScrollView 滚动时,是什么让 UIView 重新调整为默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38387745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com