iphone - 如何结合 UIScrollview 和 UIPagecontrol 显示不同的 View ?

标签 iphone xcode ios ios4 uipagecontrol

我已经搜索并搜索了这方面的教程,但没有一个是我要找的。我试过 Apple 的样本,但它只是颜色,我不知道如何让它显示。我正在寻找的是一个屏幕,该屏幕将在显示页面控件时进行分页。每次 ScrollView 页面时,我都希望它显示一个带有按钮的完全不同的 View ,很像 iPhone 的主屏幕。我发现下面的示例代码仅适用于图像,但我想修改以使用单独的 View 。请帮忙!谢谢。

- (void)setupPage {
    scrollView.delegate = self;

    [self.scrollView setBackgroundColor:[UIColor clearColor]];
    [scrollView setCanCancelContentTouches:NO];

    scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
    scrollView.clipsToBounds = YES;
    scrollView.scrollEnabled = YES;
    scrollView.pagingEnabled = YES;

    NSUInteger nimages = 0;
    CGFloat cx = 0;
    for (; ; nimages++) {
        NSString *imageName = [NSString stringWithFormat:@"image%d.jpg", (nimages + 1)];                
        UIImage *image = [UIImage imageNamed:imageName];
        if (image == nil) {
            break;
        }
        UIImageView *imageView = [[UIImageView alloc] initWithImage:image];

        CGRect rect = imageView.frame;
        rect.size.height = image.size.height;
        rect.size.width = image.size.width;
        rect.origin.x = ((scrollView.frame.size.width - image.size.width) / 2) + cx;
        rect.origin.y = ((scrollView.frame.size.height - image.size.height) / 2);

        imageView.frame = rect;

        [scrollView addSubview:imageView];
        [imageView release];

        cx += scrollView.frame.size.width;
    }

    self.pageControl.numberOfPages = nimages;
    [scrollView setContentSize:CGSizeMake(cx, [scrollView bounds].size.height)];
}

最佳答案

前几天我正在试验这个。我仍然习惯于使用 UIScrollView,但这里是您可以将 View 添加到 UIScrollView 的方法:

UIView *blueView = [[UIView alloc] init];
blueView.frame = CGRectMake(100, 0, 500, 1024);
blueView.backgroundColor = [UIColor colorWithRed:164.0/256 green:176.0/256 blue:224.0/256 alpha:1];
[scrollView addSubview:blueView];
[blueView release];

UIView *orangeView = [[UIView alloc] init];
orangeView.frame = CGRectMake(700, 0, 500, 1024);
orangeView.backgroundColor = [UIColor colorWithRed:252.0/256 green:196.0/256 blue:131.1/256 alpha:1];
[scrollView addSubview:orangeView];
[orangeView release];

请注意,我在每个 View 的 frame.origin 中设置了 x 值,以便它们彼此相邻。您还必须使用类似 [scrollView setContentSize:CGSizeMake(1200, 1024)]; 的内容设置 UIScrollView 的内容大小,以便它知道其 subview 有多大。

然后,如果您需要控制一个 UIPageControl,您可以将其 numberOfPages 设置为 2(对于上面的示例 scrollview)并更改其 currentPage属性。您可以通过实现 scrollViewDidEndDecelerating: 来完成此操作,这是 UIScrollViewDelegate 中的一个方法。您可以通过检查其 contentOffset.x 值来检查 ScrollView 位于哪个“页面”。

希望这对您有所帮助!

关于iphone - 如何结合 UIScrollview 和 UIPagecontrol 显示不同的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4404209/

相关文章:

ios - 如何使 UITableView 高度适合其在 Swift 中的内容

ios - 在显示来自 viewDidload 的警报之前显示来自应用程序委托(delegate)的警报

iphone - NSURL 连接

ios - 在界面生成器中添加的自定义 UIView 不会加载 xib

iOS-Error while uploading app to store with facebook 集成

ios - UI 测试 : How to find UIBarButtonItem by accessibilityIdentifier with predicate?

ios - Beta 测试,外部测试状态为非事件状态

iphone - xml 解析器中奇怪的 iPhone 内存泄漏

ios - xcode:如何关闭仅用于存档的将警告视为错误

ios - 嵌入式 UINavigationController 的后退按钮不起作用