iOS7下uiscrollview无法滚动
2015-09-08 11:06 唐不坏 阅读(254) 评论(0) 收藏 举报这个问题网上解决方法主要有4种,但并不是每一种都管用。原因推测和自动布局有关。在autolayout下,会在viewDidAppear之前根据subview的constraint重新计算scrollview的contentsize。 这就是为什么,在viewdidload里面手动设置了contentsize没用。因为在后面,会再重新计算一次,前面手动设置的值会被覆盖掉。 下面列出4种方法,总有1种可以解决问题。
- 1 将uiscrollview的相关内容写在-(void)viewDidAppear:(BOOL)animated方法下。(不一定成功)
- 2 取消代码中的自动布局。(比较麻烦)
- 3 在如下方法中设置uiscrollview的contentSize。(可行)
-(void)viewDidLayoutSubviews
{
self.scrollView.contentSize = CGSizeMake(712,1000);
}
先执行LayoutoutSubviews再执行DidAppear,但有时候放在DidAppear里面就是不行,即方法1不可行(为什么?)。这时候采用此方法。
- 4 不使用uiscrollview,代码自己实现uiscrollview的功能(可行)
CGRect r = [[UIScreen mainScreen] applicationFrame];
self.selectfenlei=[[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, r.size.width, r.size.height)];
self.selectfenlei.contentSize=CGSizeMake(r.size.width, 1000);
self.selectfenlei.scrollEnabled=YES;
self.selectfenlei.delegate=self;
self.selectfenlei.bounces=NO;
self.selectfenlei.pagingEnabled=YES;
self.selectfenlei.showsHorizontalScrollIndicator=NO;
self.selectfenlei.directionalLockEnabled=YES;
self.selectfenlei.scrollsToTop=NO;
[self layoutSubviews];
//设置页面背景颜色淡灰色
[self.view setBackgroundColor:[UIColor colorWithRed:235/255.0 green:235/255.0 blue:235/255.0 alpha:100]];
[self.view addSubview:self.selectfenlei];
浙公网安备 33010602011771号