更新
事实证明,下面的代码实际上并不是问题。在我的app委托中,我正在做:
- (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中的页面添加填充时遇到问题。我基本上试图设置一个简单的滚动视图,显示由预定义填充分隔的不同页面中的UIViews(有点像没有照片的照片应用程序)。我一直试图从WWDC 2010和他们的示例应用PhotoScroller开始关注Apple的ScrollView示例,但总是在视图中显示填充。该应用程序当前隐藏状态栏并向窗口添加1个视图控制器。为简单起见,每个页面应显示绿色的UIView,而填充的空间为黄色。您应该只在用户滚动时看到黄色。以下是前3页:
我有一个名为pagingScrollView的类级别字段,在.h文件中声明。在我的单视图控制器中,我基本上只是试图遵循示例代码所做的事情。
#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像素的页面。我错过了什么?
答案 0 :(得分:1)
非常简单地看一下,除了设置内容大小之外,您似乎做得相当正确。你设置:
pagingScrollView.contentSize = CGSizeMake(pagingScrollFrame.size.width * PAGE_COUNT, pagingScrollFrame.size.height);
如果你的每个页面彼此真正相邻,这是正确的,但是当你在每个视图之间添加一个10pt的垫时,你应该有类似的东西:
pagingScrollView.contentSize = CGSizeMake(pagingScrollFrame.size.width * PAGE_COUNT + PADDING * (PAGE_COUNT - 1), pagingScrollFrame.size.height);
这应该可以纠正您的问题并导致黄色不在可见区域。
答案 1 :(得分:0)
分页关闭的原因是因为在窗口上设置RootViewController显然是在幕后做某事(那是什么,我不知道)。要解决的问题是,我使用旧方法向窗口添加视图。
[self.window addSubview:self.viewController.view];
如果您认为在设置RootViewController时知道如何修复它,请告诉我!