私は自分自身で IOS 開発を学んでいますが、私がやろうとしている演習の 1 つで問題が発生しています。基本的に、表示したい写真のリストがあるので、これらの写真のリストを含むテーブルビューを作成しました。目標は、セルをクリックして、画面のサイズに自動ズームする写真を表示することです。自分でメモリを管理する方法を学べるように、ARC をオフにしています。
テーブル ビューでセルを選択すると、スクロール ビューとイメージ ビューを持つ UIViewController が呼び出されます。
これは私がアウトレットを接続した方法です:
メソッド viewWillAppear の下の PhotoViewController の実装で、次のコードを書きました。
- (void) viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.scrollView setZoomScale:1 animated:NO];
CGSize boundsSize = self.scrollView.bounds.size;
NSLog(@"@@@AMRO scrollboundsSize is width %f and height %f", boundsSize.width,
boundsSize.height);
写真をズームする方法を理解するには、boundsSize が必要です。問題は、常にゼロを読み取ることです。ストーリーボードに基づいて知っていますが、boundsSize は 320x455 です。明らかに、ハードコーディングしたくありません。
その PhotoViewController の .h で、次のように定義しました。
@property (strong, nonatomic) IBOutlet UIImageView *imageView;
@property (strong, nonatomic) IBOutlet UIScrollView *scrollView;
ViewWillAppear の場合は、次のようにします。
CGRect fullScreenRect=[[UIScreen mainScreen] applicationFrame];
self.scrollView=[[UIScrollView alloc] initWithFrame:fullScreenRect];
次に、境界を定義しますが、サイズはオフで、幅は 320.000000、高さは 548.000000 です。548という高さは、おそらくタイトルバーと下部のタブバーを含んでいるためと理解しています。ストーリー ボードに表示されている 320 x 455 の表示に基づいて境界を正しく設定する方法はありますか。私は同じことをしている人々の他のコードスニペットを見ましたが、彼らはscrollViewを割り当てさえしていません.ARCがオンであり、それは自動的に管理されるものなのでしょうか?
このアプローチを使用すると、正しいサイズが得られますが、これは正しいアプローチですか?スクロールビューが初期化されていないにもかかわらず、境界が正しく設定されている例を見てきました
CGRect viewBounds = self.view.bounds;
self.scrollView=[[UIScrollView alloc] initWithFrame:viewBounds];