使用自动布局问题调整UIScrollView中的UITextView大小

时间:2013-07-29 10:32:11

标签: ios uiscrollview uitextview autolayout

我真的不想在这里问,因为我经常试着自己解决问题。但是在这个问题上,我已经坚持了几天,无法在网上找到解决方案。

我有一个包含多个子视图的ScrollView。我有一个图像视图和顶部有两个固定高度的标签。然后有一个UITextView和另一个ImageView(见图片)。

我以编程方式将文本添加到文本视图中,因此它应该具有动态高度,ImageView应该移动到底部,以便您可以滚动。我不希望TextView本身可以滚动,但我希望所有子视图也可以移动。

我知道我应该能够使用约束来解决这个问题。但我觉得我已经尝试了所有东西,但没有任何效果。当我禁用自动布局并手动移动视图时,它工作正常。我想知道是否有更好的方法。

enter image description here

正如您所看到的,我将TextView固定在上面的ImageView上,优先级为1,000,而下面的ImageView优先级为1,000。无法删除高度约束,因此我将其设置为可能的最低优先级。底部的ImageView以绝对高度固定在超视图的底部。它的高度约束也具有低优先级。 (如果有帮助,我可以发布ImageView约束的图像) 我也尝试过以编程方式调整框架,但这与自动布局结合使用效果不佳。 (如果有帮助我当然可以发布代码)

我做错了什么?我只是禁用自动布局并手动完成吗?这对我来说似乎不洁净。它甚至可以吗?

我真的很感谢你的帮助:) 映入眼帘, 扬

3 个答案:

答案 0 :(得分:1)

确保在Interface Builder中取消选中Scrolling Enabled上的UITextView属性。我相信自动布局系统在计算内在内容大小时会考虑到这一点。

答案 1 :(得分:1)

如果某人正在努力解决类似的问题:这就是我最终要做的事情:

  • 从IB
  • 中的ScrollView中删除所有子视图
  • 以编程方式将单个UIView添加到ScrollView。
  • 将所有视图添加到UIView作为子视图(使用setFrame移动它们)
  • 将UIView的框架适当地设置为子视图
  • 将ScrollView的contentSize设置为UIView的大小。

还有一点工作,但最终有效。这遵循Apple的混合方法指南,可以在这里看到(查找UIScrollView):http://developer.apple.com/library/ios/#releasenotes/General/RN-iOSSDK-6_0/index.html

答案 2 :(得分:0)

问题是高度设置。你不知何故必须尝试删除它。如果您添加了其他“足够”的约束,它应该可以删除。

目前,您有一个高度为“大于或等于”的用户约束,以及“等于”约束。显然,这些并不能很好地协同工作。

也许存在概念错误。下部图像视图不应固定在位置,因此到下部图像视图的距离不会是“足够”的约束,以便您删除固定高度。

我认为如果

它应该有用
  • 下方图片视图具有固定高度和
  • 到上面文本视图的固定距离,
  • 文本视图的最小高度以及
  • 到上面图像视图的固定距离
  • (应根据superview修复)。