Ios 使用分页设置UIScrollView动画

Ios 使用分页设置UIScrollView动画,ios,animation,uiscrollview,scroll-paging,Ios,Animation,Uiscrollview,Scroll Paging,我有一个scrollView,每个屏幕有2个子视图,因此有10个子视图。分页现在被禁用。现在我想,每当我在ScrollView中滑动子视图时,它们都应该填满整个屏幕,然后,正常滚动适用于在一个屏幕上启用分页的每个屏幕上有10个视图。有帮助吗 const NSUInteger kNumViews= 10; const CGFloat vScrollObjWidth = 160.0; const CGFloat vScrollObjHeight = 280.0; - (void)layout

我有一个scrollView,每个屏幕有2个子视图,因此有10个子视图。分页现在被禁用。现在我想,每当我在ScrollView中滑动子视图时,它们都应该填满整个屏幕,然后,正常滚动适用于在一个屏幕上启用分页的每个屏幕上有10个视图。有帮助吗

const NSUInteger kNumViews= 10;
const CGFloat vScrollObjWidth   = 160.0;
const CGFloat vScrollObjHeight  = 280.0;

- (void)layoutScrollViews
{
 UIView *view = nil;
 NSArray *subviews = [scrollView2 subviews];
  CGFloat curXLoc = 0;
    for (view in subviews)
    {
        if ([view isKindOfClass:[UIImageView class]] && view.tag > 0)
        {
            CGRect frame = view.frame;
            frame.origin = CGPointMake(curXLoc, 0);
            view.frame = frame;

            curXLoc += (vScrollObjWidth);
        }
    }


    [scrollView2 setContentSize:CGSizeMake((kNumViews+1) * vScrollObjWidth, scrollView2.bounds.size.height)];
}

- (void)viewDidLoad
{
    self.view.backgroundColor = [UIColor viewFlipsideBackgroundColor];
    scrollView2.delegate = self;
    [scrollView2 setBackgroundColor:[UIColor blackColor]];
    scrollView2.scrollEnabled = YES;

    for (i = 1; i <= kNumViews; i++)
    {
        NSString *imageName = [NSString stringWithFormat:@"imageV%d.jpg", i];
        UIImage *image = [UIImage imageNamed:imageName];
        UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
        [imageView sizeToFit];
        imageView.layer.borderColor = [UIColor grayColor].CGColor;
        imageView.layer.borderWidth = 1.5f;

        CGRect rect = imageView.frame;
        rect.size.height = vScrollObjHeight;
        rect.size.width = vScrollObjWidth;
        imageView.frame = rect;
        imageView.tag = i;
            imageView.userInteractionEnabled = YES;

        [scrollView2 addSubview:imageView];

    }
    [self layoutScrollViews];

    self.swipeRecognizerUp = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(scaleMove:)];
    [self.swipeRecognizerUp setDelegate:self];
    [scrollView2 addGestureRecognizer:self.swipeRecognizerUp];

    self.swipeRecognizerDown = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(scaleDown:)];
    [self.swipeRecognizerDown setDelegate:self];
    [scrollView2 addGestureRecognizer:self.swipeRecognizerDown];
    self.swipeRecognizerDown.enabled = NO;



}

-(void)scaleMove:(id)sender {

    [[[(UIPanGestureRecognizer*)sender view] layer] removeAllAnimations];
    [self.view bringSubviewToFront:[sender view]];

    CGPoint velocity = [sender velocityInView:self.view];
    if(abs(velocity.y) - abs(velocity.x) > 500 && velocity.y < 0){
        CGAffineTransform scale = CGAffineTransformMakeScale(1, 0.82);
        CGAffineTransform translate = CGAffineTransformMakeTranslation(0,254);
        [sender view].transform = CGAffineTransformConcat(translate, scale);
    [UIView animateWithDuration:0.5
                     animations:^(){
                         CGAffineTransform scale = CGAffineTransformMakeScale(2, 1.64);
                         CGAffineTransform translate = CGAffineTransformMakeTranslation(0,-254);
                         [sender view].transform = CGAffineTransformConcat(translate, scale);

                    }
                     completion:nil];

    scrollView2.pagingEnabled = YES;
    self.swipeRecognizerDown.enabled = YES;
    self.swipeRecognizerUp.enabled = NO;
    }
    }



-(void)scaleDown:(id)sender {
    [[[(UIPanGestureRecognizer*)sender view] layer] removeAllAnimations];
    [self.view bringSubviewToFront:[sender view]];
    CGPoint velocity = [sender velocityInView:self.view];
    if(abs(velocity.y) - abs(velocity.x) > 500 && velocity.y > 0){
        [sender view].transform = CGAffineTransformMakeScale(2, 1.64);
    [UIView animateWithDuration:0.5
                     animations:^(){
                         [sender view].transform = CGAffineTransformMakeScale(1.0, 0.82);
                     }
                     completion:nil];
    scrollView2.pagingEnabled = NO;
    self.swipeRecognizerUp.enabled = YES;
    self.swipeRecognizerDown.enabled = NO;
    }

}
const整数kNumViews=10;
常量CGFloat VSCROLOBJWITH=160.0;
常数CGFloat VSCROLOBJHEIGHT=280.0;
-(无效)布局滚动视图
{
UIView*view=nil;
NSArray*子视图=[scrollView2子视图];
CGFloat curXLoc=0;
用于(子视图中的视图)
{
if([view iskindof类:[UIImageView类]]&&view.tag>0)
{
CGRect frame=view.frame;
frame.origin=CGPointMake(curXLoc,0);
view.frame=frame;
curXLoc+=(vScrollObjWidth);
}
}
[scrollView2 setContentSize:CGSizeMake((knumView+1)*vScrollObjWidth,scrollView2.bounds.size.height)];
}
-(无效)viewDidLoad
{
self.view.backgroundColor=[UIColor viewFlipsideBackgroundColor];
scrollView2.delegate=self;
[scrollView2 setBackgroundColor:[UIColor blackColor]];
scrollView2.scrollEnabled=是;
对于(i=1;i 500&&velocity.y<0){
CGAffineTransform scale=CGAffineTransformMakeScale(1,0.82);
CGAffineTransform translate=CGAffineTransformMakeTransform(0254);
[sender view].transform=CGAffineTransformConcat(平移,缩放);
[UIView animateWithDuration:0.5
动画:^(){
CGAffineTransform scale=CGAffineTransformMakeScale(2,1.64);
CGAffineTransform translate=CGAffineTransformMakeTransform(0,-254);
[sender view].transform=CGAffineTransformConcat(平移,缩放);
}
完成:无];
scrollView2.PaginEnabled=是;
self.swipererecognizerdown.enabled=是;
self.swipererecognizerup.enabled=否;
}
}
-(void)scaleDown:(id)发送方{
[[(UIPanGestureRecognizer*)发送方视图]层]删除配置];
[self.view将subviewTofront:[发件人视图]];
CGPoint-velocity=[sender-velocityview:self.view];
如果(abs(velocity.y)-abs(velocity.x)>500&&velocity.y>0){
[sender view].transform=CGAffineTransformMakeScale(2,1.64);
[UIView animateWithDuration:0.5
动画:^(){
[sender view].transform=CGAffineTransformMakeScale(1.0,0.82);
}
完成:无];
scrollView2.PaginEnabled=否;
self.swipereconvercerup.enabled=是;
self.swipererecognizerdown.enabled=否;
}
}

添加一些代码,说明到目前为止您所拥有的内容以及您遇到的问题。现在,我正在做这种事情。缩放整个滚动视图,以便仅通过一个视图来适应整个屏幕,然后启用分页,但这样做会跳过每一个备用页面。