2013-03-26 8 views
6

ここでは、Autosayout + UIScrollviewに関するiOS6リリースノートと関連トピックを既に読んでいますが、解決方法はわかりません。Autolayout UIScrollViewの制約が異常な動作

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

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

私は自動レイアウトONで、Interface Builderの通過ビューで要素を追加し、デフォルトの制約を保ちました。

私のラベルは動的テキストで、その高さは消耗品です(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]; 
} 

あなたが見ることができるように、私は、スクロールビューの垂直方向の制約を追加しています。 24::

2013年3月26日16:同時に 制約を満たすことができません:[11303 34704] 49.072テストこれはうまく動作しますが、私は、コンソールに次のメッセージを持っているようです。おそらく、リストの下の の制約の少なくとも1つは、あなたが望まないものです。これを試してみてください:(1)各 の制約を見て、あなたが期待していないものを見つけよう。 (2)望ましくない制約や制約を追加したコードを見つけて修正してください( )。 (注意:あなたが理解していない NSAutoresizingMaskLayoutConstraintsを見ている場合は、UIViewのプロパティのドキュメントを参照してください translatesAutoresizingMaskIntoConstraints)( 「」、 「」)

は制約 を破って回復を試みます

そして今、具体的なバグ: 私はダウンにスクロールすると、その後、私は2番目のビューに移動するには画像をクリックして、現在のビューに戻るには、[戻る]をクリック、スクロールビューの意志から始まります前任者の位置はvの先頭だった見る。そして、私は見るのを見るためにスクロールすることができません。

私は、画像を投稿するのに十分な評判を持っていないが、あなたはバグを再現するためにここにサンプルプロジェクトをダウンロードすることができごめんなさい:助けをhttps://docs.google.com/file/d/0B-sCDWMvn-KGS19sUkZnUFdWWTg/edit?usp=sharing

おかげで、 ルーカス

EDIT ここにあるバグの回避策:UIScrollView wrong offset with Auto Layout

答えて

1

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

あなたに不具合があります。ここには解決策tap hereがあります。

+0

ありがとう、これは、あなたが与えたリンクで説明したのと同じバグです。そこには回避策が用意されています。 – lukas

関連する問題