IOS-9 UIStackView问题滚动到前沿

我想实现滚动的UIStackView有两个button水平添加和删除视图。 我将scroll.contentSize更改为scroll.contentSize的大小,因此当堆栈大小大于ScrollView的大小时,可以滚动堆栈视图。 但是,滚动时,我无法达到堆栈视图的开始。 在滚动的时候,一开始我的观点很less,但是最后的观点可以达成。

 //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; }]; } } 

这里是我不能滚动到我的第一个意见的形象 这里是我可以滚动到我最后的意见的形象

@ maheswar-chinnu,你可以试试ScrollableStackView : https : //github.com/gurhub/ScrollableStackView

它是Objective-C和Swift兼容库。 它可以通过CocoaPods 。

示例代码(Swift)

 import ScrollableStackView var scrollable = ScrollableStackView(frame: view.frame) view.addSubview(scrollable) // add your views with let rectangle = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 55)) rectangle.backgroundColor = UIColor.blue scrollable.stackView.addArrangedSubview(rectangle) // ... 

示例代码(Objective-C)

 @import ScrollableStackView ScrollableStackView *scrollable = [[ScrollableStackView alloc] initWithFrame:self.view.frame]; scrollable.stackView.distribution = UIStackViewDistributionFillProportionally; scrollable.stackView.alignment = UIStackViewAlignmentCenter; scrollable.stackView.axis = UILayoutConstraintAxisVertical; [self.view addSubview:scrollable]; UIView *rectangle = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 55)]; [rectangle setBackgroundColor:[UIColor blueColor]]; // add your views with [scrollable.stackView addArrangedSubview:rectangle]; // ...