mardi 4 août 2015

IOS-9 UIStackView issue in scrolling to leading edge

I am trying to implement scroll for UIStackView where there are two buttons to add and delete views horizontally. I am changing the scroll.contentSize as the size of UIStackView so when the stack size is greater than the ScrollView's size, stack view can be scrolled. But while scrolling I am not able to reach to the starting of stack view. Few of my views in the beginning can't be reached while scrolling but last views can be reached.

//In load view
        scroll = [[UIScrollView alloc]initWithFrame:CGRectMake(25,100, screen.size.width-50, 50)];
        scroll.backgroundColor = [UIColor whiteColor];
        [self.view addSubview:scroll];
        scroll.scrollEnabled = YES;
        scroll.delegate = self;
        cus.center = CGPointMake(scroll.frame.size.width/2, scroll.frame.size.height/2);
        [scroll addSubview:cus];

        stack = [[UIStackView alloc]init];
        stack.axis = UILayoutConstraintAxisHorizontal;
        stack.distribution = UIStackViewDistributionEqualSpacing;
        stack.spacing = 30;
        stack.alignment = UIStackViewAlignmentLeading;
        stack.translatesAutoresizingMaskIntoConstraints = NO;
        [scroll addSubview:stack];


       [stack.centerXAnchor constraintEqualToAnchor:scroll.centerXAnchor].active = YES;
       [stack.centerYAnchor constraintEqualToAnchor:scroll.centerYAnchor].active = YES;

        a = 0;//this is used to count no of views currently present
//Completion of load view

    -(void)addOn//Action performing when clicking on add button.
    {

            UIView *vampire = [[UIView alloc]init];
            vampire.backgroundColor = [UIColor blackColor];
            [vampire.widthAnchor constraintEqualToConstant:40].active = YES;
            [vampire.heightAnchor constraintEqualToConstant:40].active = YES;
            vampire.layer.cornerRadius = 20;
            a = (int)stack.subviews.count;
            [stack addArrangedSubview:vampire];
            float contentWidth = ((a-1)*30+(a*40));
            scroll.contentSize = CGSizeMake(contentWidth,vampire.frame.size.height);
    }


    -(void)removeOn//Action performing when clicking on remove button.
    {
        if(a >=0)
        {
            remove.userInteractionEnabled = NO;
        UIView *view = stack.arrangedSubviews[a];
        [UIView animateWithDuration:.2
                              delay:0
                            options:UIViewAnimationOptionCurveEaseInOut
                         animations:^{
                             view.hidden = YES;

                         } completion:^(BOOL finished) {
                              a--;
                             [view removeFromSuperview];
                             float contentWidth = ((a-1)*30+(a*40));
                             scroll.contentSize = CGSizeMake(contentWidth,view.frame.size.height);
                             remove.userInteractionEnabled = YES;
                         }];
                   }
    }

Here is the image where I can't scroll to my first views Here is the image where I can scroll to my last views

Thanks in advance.

Aucun commentaire:

Enregistrer un commentaire