Autolayout UIScrollView约束奇怪的行为

luk*_*kas 6 constraints objective-c uiscrollview ios autolayout

我已经在这里阅读了iOS6发行说明和Autolayout + UIScrollview的一些相关主题,但我有一个奇怪的错误我不知道如何解决.

视图的层次结构是:

- View
-- UIScrollView
---- UIImageView
---- UILabel
Run Code Online (Sandbox Code Playgroud)

我通过Interface Builder在视图中添加了元素,并使用了Autolayout ON并保留了默认约束.

我的标签有动态文本,其高度是可消耗的(在IB中配置的行数= 0).我希望滚动视图自动适应图像视图+标签的高度.

以下是关联的视图控制器类的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.scrollView.translatesAutoresizingMaskIntoConstraints = NO;
    self.imageView.translatesAutoresizingMaskIntoConstraints = NO;
    self.label.translatesAutoresizingMaskIntoConstraints = NO;

    self.imageView.image = [UIImage imageNamed:@"image.png"];

    self.label.text = @"Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text END";
    [self.label sizeToFit];

    NSDictionary *viewsDictionnary = NSDictionaryOfVariableBindings(scrollView, imageView, label);
    [self.scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[imageView]-20-[label]-10-|" options:0 metrics:0 views:viewsDictionnary]];

    self.imageView.userInteractionEnabled = YES;
    [self.imageView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap)]];
}

- (void)tap
{
    [self.navigationController pushViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"View2"] animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我正在为滚动视图添加垂直约束.这看起来效果很好,但我在控制台中有以下消息:

2013-03-26 16:24:49.072 test [34704:11303]无法同时满足约束条件.可能至少下列列表中的一个约束是您不想要的约束.试试这个:(1)看看每个约束并试着找出你不期望的东西; (2)找到添加了不需要的约束或约束的代码并修复它.(注意:如果您看到了您不理解的NSAutoresizingMaskLayoutConstraints,请参阅UIView属性translatesAutoresizingMaskIntoConstraints的文档)("","")

将尝试通过打破约束来恢复

现在具体的错误:如果我向下滚动,然后我点击图像进入第二个视图,然后单击返回返回当前视图,滚动视图将从先前位置开始,因为它是顶部的观点.而且我无法滚动查看视图.

对不起,我没有足够的声誉来发布图片,但您可以在此处下载示例项目以重现该错误:https://docs.google.com/file/d/0B-sCDWMvn-KGS19sUkZnUFdWWTg/edit? USP =共享

谢谢你的帮助,卢卡斯

编辑此处的错误的解决方法:UIScrollView与自动布局错误的偏移

Mar*_*ski 1

根据控制台中的消息。xib 的垂直约束与您在代码中添加的约束冲突。如果您只想更改 之间的垂直间距imageViewlabel请在 xib 中执行此操作。

关于你的错误。这是解决方案点击这里