0

更新

事实证明,下面的代码实际上并不是问题所在。在我的应用程序委托中,我正在做:

- (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 页:

第 1、2 和 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 像素的页面。我错过了什么?

4

2 回答 2

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);

这应该可以纠正您的问题并导致黄色不在可见区域中。

于 2012-06-05T03:14:28.073 回答
0

分页关闭的原因是因为在窗口上设置 RootViewController 显然是在幕后做一些事情(那是什么,我不知道)。要解决的是,我使用向窗口添加视图的旧方法。

[self.window addSubview:self.viewController.view];

如果你认为你知道如何在设置 RootViewController 时修复它,请告诉我!

于 2012-06-13T02:28:52.997 回答