0

Apple の PhotoScroller サンプル アプリを完全にコードで複製しようとしてきましたが、今のところ成功していません。PhotoViewController、ImageScrollView、および TileView クラスを新しいプロジェクトにコピーし、PhotoViewController インスタンスをプログラムで作成しても、PhotoScroller アプリのようには機能しません。

  1. 複製したアプリでは画像を上下に移動できますが、PhotoScroller アプリでは画像を左右にスクロールすることしかできません。

  2. ページング スクロール ビューでは、画像が適切に中央に配置されないため、黒いパディングが表示され、画像の一部が画面外に表示されます。

代わりに、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 ファイルで、すべてがうまく機能するように構成されているのは何でしょうか?


私が言いたいことを理解するには、次の簡単な手順に従ってください。

  1. WWDC 2010 のサンプル コードをダウンロードします。

    http://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?code=y&source=x&bundleID=20645

  2. ディスク イメージを開き、iOS フォルダーに移動して、PhotoScroller.zip を抽出します。

  3. PhotoScroller.zip を解凍し、Xcode で開き、ビルドして、シミュレーターで実行します。

  4. すべてが期待どおりに正しく機能することに注意してください。

  5. 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;
    }
    
  6. ここで、シミュレーターでリビルドして再実行します。

  7. 違いに注意してください。画像は中央に配置されておらず、代わりに黒いパディングが表示されています。

では、ページング UIScrollView を ImageScrollViews の中心にする PhotoViewController.xib の設定は何ですか?

4

2 に答える 2

1

投稿されたコードが不完全なため、何が問題なのか正確にはわかりませんが、以下はPhotoScrollerサンプルアプリのように100%機能する私のコードです。3つの画像の例を示しました。これを参照してください

UIImage *iPhone = [UIImage imageNamed:@"iPhone.png"]; 
UIImage *iPad = [UIImage imageNamed:@"iPad.png"]; 
UIImage *macBookAir = [UIImage imageNamed:@"MacBookAir.png"];

CGRect scrollViewRect = self.view.bounds;
self.myScrollView = [[UIScrollView alloc] initWithFrame:scrollViewRect];
self.myScrollView.pagingEnabled = YES; 
self.myScrollView.contentSize = CGSizeMake(scrollViewRect.size.width *scrollViewRect.size.height);
[self.view addSubview:self.myScrollView];

CGRect imageViewRect = self.view.bounds; 
UIImageView *iPhoneImageView = [self newImageViewWithImage:iPhone frame:imageViewRect]; 
[self.myScrollView addSubview:iPhoneImageView];

/* Go to next page by moving the x position of the next image view */  
imageViewRect.origin.x += imageViewRect.size.width;
UIImageView *iPadImageView = [self newImageViewWithImage:iPad frame:imageViewRect];
[self.myScrollView addSubview:iPadImageView];

/* Go to next page by moving the x position of the next image view */  
imageViewRect.origin.x += imageViewRect.size.width; 
UIImageView *macBookAirImageView = [self newImageViewWithImage:macBookAir frame:imageViewRect]; 
 [self.myScrollView addSubview:macBookAirImageView];
于 2013-02-23T18:36:08.267 に答える