我有一个UIScrollView,滚动视图中有很多视图。我正在使用自动布局,我的所有视图都以相同的方式布局:左侧和顶部间距设置为超视图,宽度和高度。一切都滚动得很好,但我的页面控制保持不变。它不会滚动滚动视图中的其他元素。是的,我 检查滚动视图中的页面控件是,就像其他元素一样,是的,我已经四倍检查了页面控件的约束。它只是不会滚动。可能是什么问题呢?有标签,另一个滚动视图,文本视图,图像视图,它们都完美滚动,这只是页面视图有问题。是否有Xcode / iOS SDK的错误,或者我错过了什么?
UPDATE:我的滚动视图中的所有视图都在容器视图中。滚动视图和容器视图的translatesAutoresizingMaskIntoConstraints
属性都设置为NO
。它只是页面控件不遵守它的约束。以下是Interface Builder的截图:
答案 0 :(得分:1)
我得到了它的工作:
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];
}
希望这些解决方案都适合您!
答案 1 :(得分:0)
我做了类似的事情,我在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和元素中设置Scrollview委托。
答案 2 :(得分:0)
要使用“自动布局”调整滚动视图的框架大小,必须明确约束滚动视图的宽度和高度,或者滚动视图的边缘必须绑定到其子树外的视图。
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]];
}