繁体   English   中英

如何使用AutoLayout在UIScrollView中设置UITextView

[英]How to set a UITextView in a UIScrollView with AutoLayout

如果这已经在其他地方得到了解答,请原谅我,但是我找不到关于此的话题:

我有一个具有以下层次结构的VC:

在此处输入图片说明

我希望ContentView元素在ScrollView中滚动。 我在textView中有很多定义,有些定义长于其他。 以前,只有较长的定义会滚动,较短的定义则不会滚动,但是由于我遇到了自动布局冲突,因此最后无法单击链接。 我将ScrollView限制为View,将ContentView限制为ScrollView。 我还从主视图中获得了ContentView约束的equalWidth和equalHeight。 为了使该解决方案有效,我不得不将ContentView的高度设置为1000 pts,这样就不会截断更长的定义。 唯一的问题是,现在所有的定义都在滚动(甚至不需要滚动-没有足够的文本显示在屏幕上)。 用户可以向下滚动并看到足够的空白区域来覆盖屏幕,具体取决于定义的简短程度。

我的问题是:如何排列约束,以便较长的定义在需要时滚动而较短的定义则不需要-如何动态设置约束?

谢谢

如果我正确地理解了您的声音,听起来您在设置scrollView的内容时遇到了问题,以便它可以在应有的状态下滚动,而在不应该的情况下不滚动。 正确? 然后(假设您的约束设置正确),应该根据内容视图的大小通过autoLayout设置scrollView的contentSize。

尝试设置属性以动态控制内容视图的高度。 在您的ViewController中,创建您的属性:

@property (nonatomic, strong) IBOutlet NSLayoutConstraint *contentViewHeight;

然后,无论您在何处设置标签文本,都应计算新的高度,并根据此高度更新约束。 作为参考,这是一个有关如何确定标签中文本高度的问题。

达到高度后,即可按以下方式进行设置:

self.contentViewHieight.constant = // Updated Height
[self.view setNeedsUpdateConstraints];

希望对您有所帮助。 以我自己的经验,自从将UIScrollView更新为使用AutoLayout的方式以来,我一直在限制使用UIScrollView。 我主要使用UITableView和UICollectionView代替它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM