我的UIScrollView是一个~4500px水平视图,用户需要水平滚动才能查看内容。
我已将其设置如下:
- (void)viewDidLoad
{
[super viewDidLoad];
sview.frame = CGRectMake(0, 0, 568, 320);
sview.contentSize = CGSizeMake(4500, 320);
[sview setScrollEnabled:YES];
}
然而滚动视图什么也没做。我错过了一些明显的东西吗?我已尝试过网上的每个教程。
答案 0 :(得分:5)
我遇到了类似的问题。我做了以下修改,scrollView开始为我滚动:
-(void) viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; sview.frame = CGRectMake(0, 0, 568, 320); sview.contentSize = CGSizeMake(4500, 320); [sview setScrollEnabled:YES]; }
我认为这应该对你有帮助。
答案 1 :(得分:4)
我已经解释过它here,但是这个问题有很多答案,建议关闭自动布局。这解决了问题,但这不是真正正确的解决方案。这是我的答案:
转动自动布局有效,但不是解决方案。如果您确实需要自动布局,请使用它,如果您不需要,请将其关闭。但这不是解决方案的正确方法。
UIScrollView
与自动布局中的其他视图的工作方式不同。以下是关于自动布局的Apple's release note,我已经复制了有趣的内容:
然后,Apple继续展示如何正确使用以下是有关UIScrollView的自动布局支持的一些注意事项:
- 通常,“自动布局”会将视图的顶部,左侧,底部和右侧边缘视为可见边缘。也就是说,如果您将视图固定到 它的超级视图的左边缘,你真的把它钉在了它上面 superview边界的最小x值。更改边界原点 superview不会改变视图的位置。
- UIScrollView类通过更改其边界的原点来滚动其内容。要使用Auto Layout,顶部,左侧,底部, 滚动视图中的右边缘现在表示其内容的边缘 图。
- 滚动视图子视图的约束必须导致填充大小,然后将其解释为内容大小 滚动视图。 (这不应该与...混淆 用于自动布局的intrinsicContentSize方法。)调整滚动的大小 使用自动布局查看框架时,约束必须是显式的 关于滚动视图的宽度和高度,或者滚动视图的边缘 滚动视图必须绑定到其子树之外的视图。
- 请注意,您可以通过创建约束使滚动视图的子视图显示为浮动(不滚动)其他滚动内容 在视图和滚动视图的子树之外的视图之间,例如 滚动视图的超级视图。
UIScrollView
与自动布局。
作为一般规则,最简单的解决方法之一是在元素与UIScrollView底部之间创建约束。因此,在您希望位于UIScrollView底部的元素中,创建此底部空间约束:
再次,如果您不想使用自动布局,请将其关闭。然后,您可以按常规方式设置contentSize
。但你应该理解的是,这是自动布局的预期行为。
答案 2 :(得分:1)
首先,您必须将一些内容添加到UIScrollSiew作为滚动的子视图,而没有UIScrollView上的内容如何滚动?这是我做的,只需将UIImageView添加到UIScrollView作为大小与UIScrollView大小相同的子视图......
在viewDidLoad方法中,尝试以下代码..
-(void)viewDidLoad
{
UIScrollView *scroll=[[UIScrollView alloc] init];
scroll.frame=CGRectMake(0, 0, 320, 460);
UIImageView *imageView=[[UIImageView alloc] init];
imageView.frame=CGRectMake(0, 0, 320,460);
imageView.image=[UIImage imageNamed:@"chiranjeevi.jpeg"];
scroll.contentSize = CGSizeMake(4500, 460);
[scroll setScrollEnabled:YES];
[scroll addSubview:imageView];
[self.view addSubview:scroll];
}
我测试了这段代码它运行良好。我希望这段代码对你有所帮助..
答案 3 :(得分:0)
我假设您在Xib文件中添加了UISrollingView。这对你有用。
sview.delegate = self;
sview.backgroundColor=[UIColor clearColor];
[sview setCanCancelContentTouches:NO];
sview.indicatorStyle = UIScrollViewIndicatorStyleWhite;
sview.clipsToBounds = YES;
sview.scrollEnabled = YES;
sview.contentSize = CGSizeMake(320,570);
CGPoint topOffset = CGPointMake(0,0);
[sview setContentOffset:topOffset animated:YES];
另外,请确保在Xib文件中提供IBOutlet连接。
答案 4 :(得分:-1)
我也遇到了同样的问题。我在xib中添加了滚动视图。我还在此滚动视图中添加了一些子视图。添加子视图后,滚动视图将停止滚动。此问题的解决方案是在文件检查器中的视图的xib中使用了Autolayout。我取消选中它,并在添加子视图后滚动滚动视图。
该解决方案在xib中取消了文件检查器中的Use Autolayout。