Apple の PhotoScroller サンプル アプリを完全にコードで複製しようとしてきましたが、今のところ成功していません。PhotoViewController、ImageScrollView、および TileView クラスを新しいプロジェクトにコピーし、PhotoViewController インスタンスをプログラムで作成しても、PhotoScroller アプリのようには機能しません。
複製したアプリでは画像を上下に移動できますが、PhotoScroller アプリでは画像を左右にスクロールすることしかできません。
ページング スクロール ビューでは、画像が適切に中央に配置されないため、黒いパディングが表示され、画像の一部が画面外に表示されます。
代わりに、PhotoViewController と MainWindow の xib ファイルもコピーし、MainWindow を iPhone 展開情報でメイン インターフェイスとして設定すると、すべて正常に動作します。したがって、基本的に空に見えますが、xib ファイルにはいくつかの魔法が必要です。
application:didFinishLaunchingWithOptions: メソッドでプログラムによって PhotoViewController を作成するコードを次に示します。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
self.viewController = [[[PhotoViewController alloc] initWithNibName:@"PhotoViewController" bundle:nil] autorelease];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
)
では、PhotoViewController.xib ファイルと MainWindow.xib ファイルで、すべてがうまく機能するように構成されているのは何でしょうか?
私が言いたいことを理解するには、次の簡単な手順に従ってください。
WWDC 2010 のサンプル コードをダウンロードします。
ディスク イメージを開き、iOS フォルダーに移動して、PhotoScroller.zip を抽出します。
PhotoScroller.zip を解凍し、Xcode で開き、ビルドして、シミュレーターで実行します。
すべてが期待どおりに正しく機能することに注意してください。
AppDelegate.m の application:didFinishLaunchingWithOptions: を次のように変更します。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { PhotoViewController* vc = [[[PhotoViewController alloc] init] autorelease]; window.rootViewController = vc; [window addSubview:vc.view]; [window makeKeyAndVisible]; return YES; }
ここで、シミュレーターでリビルドして再実行します。
違いに注意してください。画像は中央に配置されておらず、代わりに黒いパディングが表示されています。
では、ページング UIScrollView を ImageScrollViews の中心にする PhotoViewController.xib の設定は何ですか?