【问题标题】:iOS 8 UIScrollView not matching content sizeiOS 8 UIScrollView 不匹配内容大小
【发布时间】:2014-09-25 15:17:10
【问题描述】:

我最近使用 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

【问题讨论】:

  • 你能检查一下 scrollView 的框架吗? NSLog(@"%@",NSStringFromCGRect(_comicScrollView.frame));

标签: ios objective-c iphone uiscrollview ios8


【解决方案1】:

问题是您在 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、Orientation change 等。此方法也适用于所有手机和平板电脑:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    • 2012-02-17
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多