アップデート
以下のコードは実際には問題ではないことがわかります。私のアプリデリゲートでは、次のことを行っています。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.viewController = [[ViewController alloc] init];
self.window.rootViewController = self.viewController;// <-- this does not work
//[self.window addSubview:self.viewController.view]; // <-- this works
[self.window makeKeyAndVisible];
return YES;
}
「self.window.rootViewController=self.viewController」というステートメントを削除し、viewControllerのビューをウィンドウに追加するだけで機能します。誰かがこれを説明できますか?ウィンドウにrootViewControllerを設定すると、子の境界が制限されますか?私はドキュメントを調べようとしましたが、これについてはあまり言及されていません。
元の投稿
UIScrollViewのページにパディングを追加するのに問題があります。私は基本的に、事前定義されたパディング(写真のないPhotosアプリのようなもの)で区切られたさまざまなページのUIViewを表示する単純なスクロールビューを設定しようとしています。私はWWDC2010のAppleのScrollViewの例とそのサンプルアプリPhotoScrollerに従おうとしていますが、常にビューにパディングが表示されます。アプリは現在、ステータスバーを非表示にし、ウィンドウに1つのViewControllerを追加します。簡単にするために、各ページには緑色のUIViewが表示され、パディングがあるスペースは黄色になっている必要があります。ユーザーがスクロールしているときにのみ黄色が表示されます。最初の3ページは次のとおりです。
.hファイルで宣言されたpagingScrollViewと呼ばれる単一のクラスレベルのフィールドがあります。私のシングルビューコントローラーでは、基本的にサンプルコードの動作を追跡しようとしています。
#define PADDING 10
#define PAGE_COUNT 3
- (void)loadView
{
CGRect pagingScrollFrame = [[UIScreen mainScreen] bounds];
pagingScrollFrame.origin.x -= PADDING;
pagingScrollFrame.size.width += (2 * PADDING);
pagingScrollView = [[UIScrollView alloc] initWithFrame:pagingScrollFrame];
pagingScrollView.pagingEnabled = YES;
pagingScrollView.backgroundColor = [UIColor yellowColor];
pagingScrollView.contentSize = CGSizeMake(pagingScrollFrame.size.width * PAGE_COUNT, pagingScrollFrame.size.height);
self.view = pagingScrollView;
for(int i = 0; i < PAGE_COUNT; i++) {
CGRect frame = [self frameForPageAtIndex:i];
UIView *page = [[UIView alloc] initWithFrame:frame];
page.backgroundColor = [UIColor greenColor];
[pagingScrollView addSubview:page];
}
}
- (CGRect)frameForPageAtIndex:(NSUInteger)index {
CGRect bounds = pagingScrollView.bounds;
CGRect pageFrame = bounds;
pageFrame.size.width -= (2 * PADDING);
pageFrame.origin.x = (bounds.size.width * index) + PADDING;
return pageFrame;
}
pagingScrollFrameの幅は340なので、(私が思ったように)スクロールビューは340ピクセルのページに分割されます。私は何が欠けていますか?