20

自動レイアウトの新しいiOS6SDKで非常にシンプルな要素を作成しようとしています。ImageViewがあり、ScrollViewに埋め込みます。(すべてがInterface Builderで構築されます)。.pngファイルが設定され、imageViewモードが「左上」に設定されます。

実装:

#import "ImaginariumViewController.h"

@interface ImaginariumViewController ()
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end

@implementation ImaginariumViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.scrollView.contentSize = self.imageView.image.size;
    self.imageView.frame =
    CGRectMake(0, 0, self.imageView.image.size.width, self.imageView.image.size.height);
}

@end

アプリを実行すると、画像がスクロールされません。自動レイアウトをオフにして(支柱とバネを使用して)すべて同じことを行い、スクロールを実行しています。問題は制約にあると思います。誰か助けてくれませんか?

4

2 に答える 2

52

更新していたチュートリアルで同じ問題が発生しました。プログラムで制約を削除し、罵倒し、壁に頭をぶつけようとしましたが、運が悪かったのです。

しかし、約5分前に、私が遭遇した別の問題を修正する何かを試しました。UIScrollViewが再び機能しています!解決策は、UIScrollView contentSizeプロパティを設定する古いコードを、viewDidLoadではなくviewDidAppearの実装に移動することでした。

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    self.theScroller.contentSize=CGSizeMake(200.0,2000.0);
}

これが、自動レイアウトで発生した頭痛の種に遭遇する他の誰かに役立つことを願っています。

于 2012-09-29T12:41:38.220 に答える
27

自動レイアウトは、最初は非常に混乱する可能性があります。実際には、スクロールビューのcontentSizeをどこにも設定したくありません。純粋な自動レイアウトアプローチでは、スクロールビューが独自のコンテンツサイズを設定します。自動レイアウトとiOS6リリースノートUIScrollViewのセクションを参照してください。

スクロールビューのサブビューに対する制約により、埋めるサイズが必要になります。これは、スクロールビューのコンテンツサイズとして解釈されます。(これは、自動レイアウトに使用されるintelligentContentSizeメソッドと混同しないでください。)

これは、スクロールビューのサブビューの制約が明示的な幅と高さを設定する必要があり、スクロールビューの側面に基づいて変化する幅を使用しないことを意味することに注意してください。

ここでの2番目のエラーは、のフレームをUIImageView画像のサイズに設定したことです。自動レイアウトでは、これも不要です。UIImageView実際には、下にある画像のintrinsicContentSizeサイズであるがあります。(これを変更するには、幅と高さの制約を高い優先度で設定する必要があります)つまり、自動レイアウトを使用して画像をスクロールビューに配置し、スクロールさせるには、正しいコードは次のようになります。

** nothing at all!!! **

ただし、スクロールしないように見える画像が表示される可能性があることに注意する必要があります。ヒントは、前述のリリースノートにあります。

ビューと、スクロールビューのスーパービューなど、スクロールビューのサブツリーの外側にあるビューとの間に制約を作成することにより、スクロールビューのサブビューを他のスクロールコンテンツ上でフロート(スクロールではない)に見せることができることに注意してください。

つまり、Interface Builderで制約を設定し、画像ビューを階層内のスクロールビューの上のビューに制約すると、ビューがスクロールするように見える方法に影響します。狂った!

ハッピーコーディング...

于 2012-11-13T22:32:26.233 に答える