Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使用AutoLayout在UIScrollView中设置UITextView_Ios_Objective C_Uiscrollview - Fatal编程技术网

Ios 如何使用AutoLayout在UIScrollView中设置UITextView

Ios 如何使用AutoLayout在UIScrollView中设置UITextView,ios,objective-c,uiscrollview,Ios,Objective C,Uiscrollview,如果其他地方已经回答了,请原谅我,但我找不到关于这一点的线索: 我有一个具有以下层次结构的VC: 我希望ContentView元素在ScrollView中滚动。我在文本视图中有很多定义,有些定义比其他定义长。以前,只有较长的定义会滚动,较短的定义不会滚动,但由于我有一个自动布局冲突,链接无法在最后单击。我将ScrollView约束到视图,将ContentView约束到ScrollView。我还将ContentView从主视图约束为equalWidth和equalHeight。为了让这个解决方案

如果其他地方已经回答了,请原谅我,但我找不到关于这一点的线索:

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

我希望ContentView元素在ScrollView中滚动。我在文本视图中有很多定义,有些定义比其他定义长。以前,只有较长的定义会滚动,较短的定义不会滚动,但由于我有一个自动布局冲突,链接无法在最后单击。我将ScrollView约束到视图,将ContentView约束到ScrollView。我还将ContentView从主视图约束为equalWidth和equalHeight。为了让这个解决方案起作用,我必须将ContentView的高度设置为1000 pts左右,这样更长的定义就不会被截断。唯一的问题是,现在所有的定义都在滚动(即使是那些不需要滚动的定义,也没有足够的文本在屏幕上滚动)。用户可以向下滚动,看到足够的空白来覆盖屏幕,这取决于定义的简短程度

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


谢谢

如果我理解正确,听起来您在设置scrollView的内容时遇到了问题,以便它在应该滚动时滚动,而不是在不应该滚动时滚动。对的然后(假设您的约束设置正确),您的scrollView的contentSize应该根据内容视图的大小由autoLayout设置

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

@property (nonatomic, strong) IBOutlet NSLayoutConstraint *contentViewHeight;
然后,无论在何处设置标签的文本,都应该计算新高度,并基于此更新约束

获得高度后,可以如下设置:

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

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

谢谢,Aron。是的,这就是我的想法;动态调整contentSize的大小。您说过“假设您的约束设置正确,您的scrollView的contentSize应该由自动布局设置…”我很确定所有内容都正确连接(没有自动布局问题),并且在不同的设备上都可以正确调整大小。它是否应该在没有显式属性的情况下调整大小?手动调整每个文本视图的大小对我来说并不是一个真正的解决方案。@我不是说你应该动态调整每个文本视图的大小。您只需要获取contentView中所有内容的高度,并对其设置高度约束。但是,现在我考虑了更多,它应该更简单:您不应该将contentView的大小限制到视图。相反,您应该将底部和尾部空间约束到scrollView中的最后一个元素。如果内容视图中的所有内容都得到了适当的约束,那么当文本视图的大小增加时,包含视图的整体大小也会增加。谢谢Aron。目前,这些是我的限制:ScrollView(顶部、底部、前导、尾随)到MainView。ContentView(上、下、前导、尾随)到ScrollView,equalWidth到MainView。然后,对于ContentView中的textView,我有(顶部、底部、前导、尾随)。然后我使用self.textViewHeightConstraint.constant=[self.sourceInformation sizeThatFits:CGSizeMake(self.sourceInformation.frame.size.width,CGFLOAT_MAX)].height设置高度约束属性;到目前为止,我的结果好坏参半;肯定会根据文本动态调整大小,但仍然不是100%。想法?@jdle复制和粘贴错误。正在编辑。@jdlece(编辑时间太长。)听起来您的约束配置不正确。希望这能有所帮助。什么部分不能100%工作?