我制作了iPhone应用程序,我有这个层次结构,
: 当我尝试滚动我的滚动视图时,它不会滚动我在我的项目中使用Autolayout
我的滚动视图的内容大小比我的滚动视图的高度大仍然不会滚动。
以下是我在viewDidLoad
UIView *tempo = (UIView *)[scrollVw viewWithTag:6];//View which is inside Scrollview
float sizeOfContent = 0;
for (int i = 0; i < [tempo.subviews count]; i++) {
UIView *view =[tempo.subviews objectAtIndex:i];
sizeOfContent += view.frame.size.height;
}
NSLog(@"sizeOfContent = %f", sizeOfContent);
scrollVw.contentSize = CGSizeMake(scrollVw.frame.size.width, 1500);
NSLog(@"scrollVw width = %f -- scrollVw height =%f",scrollVw.frame.size.width, scrollVw.frame.size.height);
NSLog(@"tempo width = %f -- tempo height =%f",tempo.frame.size.width, tempo.frame.size.height);
日志结果:
sizeOfContent = 1500
scrollVw width = 320.000000 scrollVw height = 416.000000
tempo width = 320.000000 tempo height = 416.000000
我在哪里做错了?
答案 0 :(得分:9)
如果您使用的是autolayout,那么您的视图最终会在viewDidLoad之后布局。因此,将您的代码移动到viewWillAppear或viewDidLayoutSubviews中,您应该没问题。
答案 1 :(得分:3)
请在设置内容大小后尝试调用此方法
scrollVw.contentSize = CGSizeMake(scrollVw.frame.size.width, 1500);
[scrollVw layoutIfNeeded];
答案 2 :(得分:1)
您在哪里记录您的contentSize等?在viewDidLoad?
它在viewDidLayoutSubviews中显示了什么?我认为你的约束正在弄乱你的内容。
答案 3 :(得分:1)
希望这会对你有所帮助
,当您使用带有自动布局的UIScrollView时,自动布局不会像您期望的那样工作。(您的图像显示红色箭头,然后再转到其他地方请点击它并调整您的自动布局)
View (main view of my UIViewController) – with
-Scroll View (UIScrollView)
--Container View
----Content1
----Content2 (etc)
- &GT;滚动视图必须至少有一个附加到其每个边缘的内容,例如,顶部,左侧,右侧和底部(容器视图)。
- &GT;不要固定滚动视图的高度,宽度只给它4个约束(前导,尾随,顶部和底部)。
- &gt;将容器视图前导,尾随,顶部和底部空格赋予滚动视图。
并限制内部内容。然后
if(self.viewScroll.contentSize.height>self.viewScroll.frame.size.height)
{
[self.viewScroll setScrollEnabled:YES];
}
else
{
[self.viewScroll setScrollEnabled:NO];(if you want)
}
答案 4 :(得分:0)
从viewcontroller取消选中autolayout,然后尝试并确保contentsize.height超过scrollview高度。
答案 5 :(得分:0)
我认为滚动视图的高度(568)大于scrollview.contentsize(例如350)是可以的。唯一能帮助我的是改变我们在scrollview上放置的Imageview的内容模式:
imgView.contentMode = UIViewContentModeScaleToFill;
您甚至不需要以这种方式访问方法scrollViewDidEndZooming。