1

我想将视图相互嵌入(在当前情况下,嵌入到滚动视图中以允许显示比屏幕尺寸更高的内容)并使用 iOS 6.0 的自动布局功能以避免不断计算内容大小。

我有以下 ViewController 的视图,其中包含一个 UIScrollView:

在此处输入图像描述

我想在这个滚动视图中显示我的 ChildVC 视图:

请注意,标签是多行的并且包含“很多”文本,还定义了自动布局约束(尤其是大于或等于 height 属性)。

在此处输入图像描述

我创建 childVC 并通过以下代码将其添加到主 VC 的视图中:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    childVC = [[ChildVC alloc] initWithNibName:@"ChildVC" bundle:nil];    

    self.myScrollView.translatesAutoresizingMaskIntoConstraints = NO;
    childVC.view.translatesAutoresizingMaskIntoConstraints = NO;

    [self.myScrollView addSubview:childVC.view];

    NSDictionary *viewsDictionary = @{ @"subView" : childVC.view};

    NSString* constr = [NSString stringWithFormat:@"|-0-[subView(%f)]-0-|", self.myScrollView.frame.size.width];    
    [self.myScrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:constr options:0 metrics: 0 views:viewsDictionary]];

    [self.myScrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[subView]-(>=0)-|" options:0 metrics: 0 views:viewsDictionary]];
}

内容视图的约束(我猜这将是 childVC 的视图)是代码中设置的唯一内容,因为我只想要一个垂直滚动条,我希望子视图的内容(水平)缩小以显示在滚动查看器。

我的输出是这样的:

在此处输入图像描述

UI 显示、缩小但我的标签不会垂直调整大小,因此它不会显示整个文本:(

我试图在这里和那里将 translatesAutoresizingMaskIntoConstraints 设置为标签,但没有任何成功。

我很感激任何帮助,因为我已经为此苦苦挣扎了好几天:/

4

1 回答 1

-2

就个人而言,我认为这些约束和自动布局功能并不总是完全按照我们的意愿工作。(特别是在不同的屏幕尺寸上)。

所以我通常在 viewDidLoad 方法中添加几行代码来将某些对象移动几个像素。您还可以更改大小等。

从字面上看,像这样一个简单的动作就可以做到这一点,而用户不会注意到任何动画:

object_name.frame = CGRectOffset(object_name.frame, 0, -40.0f);
于 2014-02-27T18:57:04.390 回答