ios - 缩放后在 UIScrollView 中启用分页

标签 ios uiscrollview xcode4.3 paging zooming

我有一个加载三个不同页面的 UIScrollView
当我放大一个页面,然后缩小到原来的大小时,应用程序停止让我在页面之间滚动, 就像禁用了分页一样。当缩小到原始大小 (Scale == 1) 时,我该怎么做才能重新启用分页?

这是我的代码

- (void)viewDidLoad
{
    [ScView setMaximumZoomScale : 2.0f];
    [ScView setMinimumZoomScale : 1.0f];

    ScView.contentSize = CGSizeMake(1024*3, 1.0);
    ScView.pagingEnabled = YES;

    ScView.clipsToBounds = YES;
    ScView.delegate = self;

    ScView.showsHorizontalScrollIndicator = NO;
    ScView.showsVerticalScrollIndicator = NO;

    [super viewDidLoad]; 

    [self returnImages];
}

-(void)returnImages{
    for (pageNumber = 1; pageNumber <= 3; pageNumber++) {
        imagen = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d.png",pageNumber]]];
        imagen.frame = CGRectMake((pageNumber-1)*1024, 0, 1024, 768);

        [ScView addSubview:imagen];
    }
}

//
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
        return ScView;
   //   return [imagen initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d.png",pageNumber]]];
}

- (void)scrollViewWillBeginZooming:(UIScrollView *)myScrollView withView:(UIView *)view
{ 
    NSLog(@"Scroll Will Begin");
    ScView.scrollEnabled = YES;
}

- (void)scrollViewDidEndZooming:(UIScrollView *)myScrollView withView:(UIView *)view atScale:(float)scale 
{ 
    if(scale == 1)
    {
        ScView.scrollEnabled = YES;
        ScView.pagingEnabled = YES;
        [self returnImages];
        NSLog(@"Scrolol will end");
        //ScView.maximumZoomScale = 2.0f;
       // [super viewDidLoad];

        [self returnImages];
    }
}

任何想法将不胜感激..

最佳答案

要获得正确的分页和缩放,您必须将每个页面的 UIScrollView 嵌入到您的父 UIScrollView 中。这种组合将允许您同时使用分页和内部滚动。

这是带有父 ScrollView 和三个嵌入式可缩放页面的 UIViewController 示例。

#define VIEW_FOR_ZOOM_TAG (1)

@implementation SVViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    UIScrollView *mainScrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
    mainScrollView.pagingEnabled = YES;
    mainScrollView.showsHorizontalScrollIndicator = NO;
    mainScrollView.showsVerticalScrollIndicator = NO;

    CGRect innerScrollFrame = mainScrollView.bounds;

    for (NSInteger i = 0; i < 3; i++) {
        UIImageView *imageForZooming = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"page%d", i + 1]]];
        imageForZooming.tag = VIEW_FOR_ZOOM_TAG;

        UIScrollView *pageScrollView = [[UIScrollView alloc] initWithFrame:innerScrollFrame];
        pageScrollView.minimumZoomScale = 1.0f;
        pageScrollView.maximumZoomScale = 2.0f;
        pageScrollView.zoomScale = 1.0f;
        pageScrollView.contentSize = imageForZooming.bounds.size;
        pageScrollView.delegate = self;
        pageScrollView.showsHorizontalScrollIndicator = NO;
        pageScrollView.showsVerticalScrollIndicator = NO;
        [pageScrollView addSubview:imageForZooming];

        [mainScrollView addSubview:pageScrollView];

        if (i < 2) {
            innerScrollFrame.origin.x += innerScrollFrame.size.width;
        }
    }

    mainScrollView.contentSize = CGSizeMake(innerScrollFrame.origin.x + innerScrollFrame.size.width, mainScrollView.bounds.size.height);

    [self.view addSubview:mainScrollView];
}

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    return [scrollView viewWithTag:VIEW_FOR_ZOOM_TAG];
}

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}

- (BOOL)shouldAutorotate {
    return NO;
}

@end

关于ios - 缩放后在 UIScrollView 中启用分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13719980/

相关文章:

ios - NSMutableArray 对象的总大小

iphone - 计算UITabBar的高度

ios - UIScrollView 中缺少图像

ios - UIViewController 没有接收到 TouchBegan 消息

c - 带有 Xcode 4.3.2 的 Mac OS X Lion 上的 Flex 和 Bison

ios - 直接从横向右转为横向左

ios - 如何将图像裁剪成圆角

iphone - 对象AL : Crashing on fadeTo:duration:target:selector:

ios - 来自两个字符串数组的 double 组

xcode - 为什么我的 gcc 不在/usr/bin/gcc 中,即使安装了 Xcode 4.3?