使用autolayout动态添加/删除视图

时间:2014-09-23 16:09:53

标签: ios uiscrollview autolayout

我有一个相当复杂的视图,我正在尝试更新它以使用autolayout(同时我学习autolayout)。以下是我的观点的截图:

IB screenshot

你唯一看不到的是所有这些视图都包含在一个containerView中,并且该容器位于垂直滚动UIScrollView.So如果有一个非常长的描述或者你可以滚动的东西垂直。

我的第一个问题是我无法弄清楚如何让descriptionView(红色背景)动态调整它的高度(我在IB中禁用了滚动,在代码中再次禁用了滚动)。我认为它可能与imageScrollView的底部约束有关。

第二个问题是需要在一半时间内删除imageScrollView。它包含一个项目的多个图片。但有时项目没有图片所以我只想删除该实例中的scrollView。我在代码中调用removeSubview,并希望只需重新调整即可,而无需设置一堆新约束。所以我在问题/评论标签中添加了一个顶部空间约束到描述的底部,并将其优先级更改为900而不是1000.这似乎解决了我的第一个问题,当我删除imageScrollView时,描述视图的大小调整为内容。但是我的滚动视图包含所有内容不再滚动,我假设containerView的高度搞砸了什么。

编辑:我越想到这一点,我就越想到弄清楚如何为尺寸添加一个约束,descriptionView的高度与内容相匹配也将解决另一个问题。这是当前约束的另一个屏幕截图。

Constraints Screenshot

我认为将自己的解决方案作为公认的答案发布是不公平的。因此,我在问题中发布了我的解决方案,并向Nikita提供了接受的答案,用于拖拽与textViews相关的所有问题。

我的第一个问题是通过使用:Github - Resizable Text View

解决的

第二个问题只是正确设置约束。红色textView对superview(contentContainer)的底部有一个约束(superview设置主scrollView的高度。)所以当我删除textView时,contentContainer视图没有高度约束。所以我最终删除了从textView到superview(这是contentContainer)的约束,并从commentTextView的底部到contentContainer进行了约束。这解决了这个问题。每当我删除红色文本时,一切都会按照我想要的方式缩小。

2 个答案:

答案 0 :(得分:1)

我不确定,我的解决方案是最好的解决方案,但是我已经按照以下方式完成了解决方案(我认为这可以帮助您查看红色文字):How do I size a UITextView to its content? < / p>

不幸的是,我对第二个问题并不了解。请提供更多详细信息。谢谢!

答案 1 :(得分:0)

请勿删除图像视图。只需给它一个零高度约束。这样你就不必混淆任何其他约束。