更新
事实证明,下面的代码实际上并不是问题所在。在我的应用程序委托中,我正在做:
- (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 中的页面添加填充时遇到问题。我基本上是在尝试设置一个简单的滚动视图,它在不同的页面中显示 UIView,由预定义的填充分隔(有点像没有照片的照片应用程序)。我一直在尝试从WWDC 2010和他们的示例应用程序PhotoScroller中遵循 Apple 的 ScrollView 示例,但总是想出在视图中显示的填充。该应用程序当前隐藏状态栏并向窗口添加 1 个视图控制器。为了简单起见,每个页面都应该显示一个绿色的 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 像素的页面。我错过了什么?