UIPageControl不遵守它在UIScrollView中的约束

我有一个UIScrollView,在我的滚动视图中有很多视图。 我使用的是自动布局,所有的视图都以相同的方式布局:左和顶间距超级视图,宽度和高度设置。 一切都很好滚动,但是我的页面控制保持不变。 它不滚动滚动视图内的其他元素。 是的,我没有像其他元素一样检查页面控件是否在滚动视图中,是的,我已经四次检查了页面控件的约束条件。 它只是不会滚动。 可能是什么问题呢? 有标签,另一个滚动视图,文本视图,图像视图和他们都完全滚动,这只是页面视图是有问题的。 有Xcode / iOS SDK的错误,还是我错过了什么?

更新:我的滚动视图内的所有视图都在容器视图内。 滚动视图和容器视图的translatesAutoresizingMaskIntoConstraints属性都设置为NO 。 只有页面控件不服从它的限制。 以下是Interface Builder的屏幕截图:

在这里输入图像说明

我得到它的工作:

1)把一个containerView中的所有视图/控件声明为一个属性。

2)添加这个代码:

 -(void)viewDidLayoutSubviews{ [super viewDidLayoutSubviews]; self.scrollView.contentSize = self.containerView.bounds.size; } - (void)viewDidLoad{ [super viewDidLoad]; //added with containerview from g8productions self.containerView = [[UIView alloc] initWithFrame:CGRectMake(36, 59, 900, 1200)]; self.scrollView.translatesAutoresizingMaskIntoConstraints = NO; [self.scrollView addSubview:self.containerView]; [self.scrollView setContentSize:self.containerView.bounds.size]; } 

希望这些解决scheme的任何一个都适合你!

我做了这样的事情,我更新了scrollview委托方法中的页面控制:

 -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { // If tag == 0 means that is the scrollview for gallery if (scrollView.tag == 0) { self.pageControllGallery.currentPage = self.sv1ScrollViewGallery.contentOffset.x/320; } else { // Change the bottom label text int page = (scrollView.contentOffset.x / 320); [UIView animateWithDuration:0.3 animations:^{ self.labelBottom.alpha = 0.0f; self.labelBottom.text = [self.arrayOfScrollviews objectAtIndex:page]; self.labelBottom.alpha = 1.0f; }]; } } 

我计算页面并在PageControll中设置该页面。

不要忘记在.h和元素中设置滚动视图委托。

要使用“自动布局”来调整滚动视图的框架,约束必须是关于滚动视图的宽度和高度的显式,或者滚动视图的边缘必须绑定到其子视图之外的视图。

https://developer.apple.com/library/ios/releasenotes/General/RN-iOSSDK-6_0/index.html

如果你可以倾倒Autolayout这将是最好的。

看看这个链接,他们在底部有一个Pure AutoLayout示例。

基本上使用这种代码模式:

 @interface ViewController () { UIScrollView *scrollView; UIImageView *imageView; } @end @implementation ViewController - (void)viewDidLoad{ [super viewDidLoad]; scrollView.translatesAutoresizingMaskIntoConstraints = NO; imageView.translatesAutoresizingMaskIntoConstraints = NO; [scrollView addSubview:imageView]; [self.view addSubview:scrollView]; NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(scrollView,imageView); [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[scrollView]|" options:0 metrics: 0 views:viewsDictionary]]; [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollView]|" options:0 metrics: 0 views:viewsDictionary]]; [scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[imageView]|" options:0 metrics: 0 views:viewsDictionary]]; [scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[imageView]|" options:0 metrics: 0 views:viewsDictionary]]; }