2014-09-25 181 views
0

我最近开始使用iOS 8创建一个新项目,我一直在用UIScrollView尝试一些东西,所以我创建了一个新的单个视图项目,将scrollview添加到主要的Storyboard ,添加了视图并增加了内容大小,但是,滚动视图不滚动整个内容大小。该代码是这样:iOS 8 UIScrollView与内容大小不匹配

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
UIViewController* controllerA = [[UIViewController alloc] init]; 
[[controllerA view] setBackgroundColor:[UIColor blueColor]]; 
[[controllerA view] setBounds:[[self view] bounds]]; 

[_comicScrollView addSubview:[controllerA view]]; 

[_comicScrollView setContentSize:CGSizeMake(640, 480)]; 

// Do any additional setup after loading the view, typically from a nib. 
} 

而且是最后的地步滚动视图停止: http://imgur.com/ZYlE6yK

+0

您可以检查scrollView的帧吗? '的NSLog(@ “%@”,NSStringFromCGRect(_comicScrollView.frame));' – streem 2014-09-25 15:28:54

回答

0

问题是你要设置的内容大小viewDidLoad中直接硬编码。如果您只是旋转设备,那将会破坏。

解决方案覆盖

- viewDidLayoutSubviews 
{ 
    [super viewDidLayoutSubviews]; 
    CGRect boundsOfSelf = self.view.bounds; 
    _comicScrollView.frame = boundsOfSelf; 
    [_comicScrollView.frame setContentSize: boundsOfSelf.size]; 
    // also resize your controllerA.view here if needed. 
} 

在viewDidLoad中难道没有设置帧。在viewController生命周期中,它们不会适应任何事情。 PhoneStatusBar,方向更改等。此方法也适用于所有手机和打印机:)