UITextView在UIScrollView内水平拉伸但不垂直拉伸

时间:2014-12-26 15:39:17

标签: ios objective-c iphone cocoa-touch uiscrollview

我的任务非常简单 - 只需在自定义UIView中显示垂直滚动文本。 我有一个带有一个容器的UIScrollView,里面有一个UITextView。以后需要容器来添加更多项目。我使用IB(xib文件)添加autolayout约束,如下所示:

Screenshot

但我看到的一切都是:

Simulator

它横向滚动: - (

我尝试过设置UIScrollView的contentSize:

  • 在initWithCoder,didMoveToSuperview,willMoveToSuperview =无效
  • 在自定义方法中,从主viewcontroller调用=根本没有滚动,我看到相同的图片。

非常感谢!

编辑:文本视图和容器视图的内在大小设置为"占位符"。我知道我应该限制ContainerView的宽度,但它应该适用于所有屏幕尺寸和方向,因此在代码中设置宽度,IMO,比设置约束更糟。

1 个答案:

答案 0 :(得分:1)

呀!我找到了解决方案!

如果有人遇到同样的问题:

您应该将左右约束添加到UIScrollView,而不是添加到UIScrollView的超级视图(到超级超级视图)。

不幸的是,这不能在IB中完成,但你可以在代码中完成:

[self addConstraint:[NSLayoutConstraint constraintWithItem:self.view 
    attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual
    toItem:self.containerView attribute:NSLayoutAttributeLeft
    multiplier:1.0 constant:-30]];
[self addConstraint:[NSLayoutConstraint constraintWithItem:self.view
    attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual
    toItem:self.containerView attribute:NSLayoutAttributeRight
    multiplier:1.0 constant:30]];

其中self.containerView在UIScrolllView中查看,self.view在UIScrollView外查看

所以:

您将垂直约束设置为 UIScrollView 水平约束设置为顶级视图