6

iOS6のリリースノートとAutolayout+UIScrollviewの関連トピックのいくつかをここですでに読んでいますが、解決方法がわからない奇妙なバグがあります。

ビューの階層は次のとおりです。

- View
-- UIScrollView
---- UIImageView
---- UILabel

Autolayoutをオンにして、Interface Builderを介してビューに要素を追加し、デフォルトの制約を維持しました。

私のラベルには動的なテキストがあり、その高さは消費可能です(IBで構成された行数= 0)。スクロールビューが画像ビューとラベルの高さに自動的に適応するようにしたい。

関連するViewControllerクラスのコードは次のとおりです。

- (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];
}

ご覧のとおり、スクロールビューに垂直方向の制約を追加しています。これはうまく機能しているようですが、コンソールに次のメッセージが表示されます。

2013-03-26 16:24:49.072 test [34704:11303]制約を同時に満たすことができません。おそらく、次のリストの制約の少なくとも1つは、不要な制約です。これを試してください:(1)各制約を見て、予期しないものを見つけ出してください。(2)不要な制約を追加したコードを見つけて修正します。(注:理解できないNSAutoresizingMaskLayoutConstraintsが表示されている場合は、UIViewプロパティのドキュメントを参照してください。translatesAutoresizingMaskIntoConstraints)( ""、 "")

制約を破って回復しようとします

そして今、具体的なバグ:下にスクロールし、画像をクリックして2番目のビューに移動し、戻るをクリックして現在のビューに戻ると、スクロールビューは前の位置から開始されます。ビューの。また、スクロールしてビューの上部を表示することはできません。

申し訳ありませんが、画像を投稿するのに十分な評判がありませんが、サンプルプロジェクトをここからダウンロードして、バグを再現できます:https://docs.google.com/file/d/0B-sCDWMvn-KGS19sUkZnUFdWWTg/edit? usp =sharing

助けてくれてありがとう、ルーカス

ここでバグの回避策を編集:自動レイアウトでUIScrollViewのオフセットが間違っている

4

1 に答える 1

1

コンソールのメッセージによると。xibからの垂直方向の制約は、コードで追加した制約と競合します。間の垂直方向のスペースを変更したいだけの場合は、xibimageViewlabelそれを行います。

あなたのバグについて。これが解決策のタップです

于 2013-03-26T17:36:37.567 に答える