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]]; }
- 在Interface Builder中deviseUITableView的节标题
- 如何使IBOutlets脱离对象数组?
- 如何在Interface Builder中创build1px行?
- iPhone 4和5自动调整垂直空间
- 如果通过Interface Builder添加,则不能修改UIImageView的框架
- UITextField – 为leftView添加UIView – 无法获得焦点
- 如何在Xcode 4中的Interface Builder中的类窗格中定义Outlet和Actions?
- 为什么基本的UIScrollView没有几个button滚动?
- UIColor与IB颜色(颜色configuration文件问题)