2

我在我的应用程序情节提要中的一个场景中包含了一个 ScrollView。现在我对iOS中的很多东西都很陌生,我终于设法让滚动条出现在场景中。问题是,虽然滚动条出现了,但它并没有在内容上滚动。

我在 AppRequestViewController.h 和 AppRequestViewController.m 中设置了 ScrollView:

AppRequestViewController.h

@interface AppRequestViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;

AppRequestViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.scrollView.contentSize=CGSizeMake(320,1000);

}

这是我的视图层次结构:

在此处输入图像描述

故事板中的场景:

在此处输入图像描述

模拟器中的滚动条出现但不太有效:

在此处输入图像描述

有人能告诉我哪里出错了吗?谢谢。

4

6 回答 6

3

在 iOS 中为 Storyboard 设置 ScrollView 可能会有些混乱。我的问题中 ScrollView 的设置是正确的,但是很少有错误导致程序运行与预期不同。

首先,我发现的解决方法是取消选中文件检查器中的设置自动布局。第二个是更正视图层次结构。为了测试我的修复,我将场景的内容更改为更简单的内容:带有视图、滚动视图、嵌套视图和两个按钮。这是新的视图层次结构:

在此处输入图像描述

ScrollView 位于主视图之后的视图层次结构之上。然后,我放置了另一个 View 来容纳其他 View 对象。我的程序首先不起作用的原因是因为 ScrollView 与其他对象处于同一级别,这就是它无法滚动内容的原因。

我还在 AppRequestViewController.m 的 viewDidLoad 方法中添加了额外的设置:

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self.navigationController setNavigationBarHidden:YES];
    [self.scrollView setScrollEnabled:YES];
    self.scrollView.contentSize=CGSizeMake(320,800);

}

设置 ScrollView 非常简单,但可能会造成混淆。我根据这个YouTube 教程修复了我的程序。希望这可以帮助。

于 2013-11-13T15:21:54.000 回答
1

我猜, setContentSize: inside viewWillAppear: 或 viewDidAppear: 会解决你的问题。

- (void)viewDidLoad
{
    [super viewDidLoad];

 // relocate this line
 // self.scrollView.contentSize=CGSizeMake(320,1000);

}

...

- (void)viewWillAppear:(BOOL) animated
{
    [super viewWillAppear:animated];
    self.scrollView.contentSize=CGSizeMake(320,1000);

}
于 2013-11-13T02:00:09.957 回答
0

看来您的滚动视图已超出屏幕。您是否将滚动视图的属性设置为autoResizesSubviewstrue 和. 如果你使用,去设置适当的约束。autoresizingMaskUIViewAutoresizingFlexibleWidth| UIViewAutoresizingFlexibleWidthauto layout

于 2013-11-13T00:43:11.127 回答
0

可滚动内容应该是滚动视图的子视图。您需要先检查视图的层次结构。之后,您可以使用下面的代码来比较 ViewController 中的视图大小和内容大小。

- (void)viewWillLayoutSubviews
{
    NSLog(@"scrollview size : %@", NSStringFromCGSize(self.scrollView.frame.size));
    NSLog(@"content size : %@", NSStringFromCGSize(self.scrollView.contentSize));
}

内容大小应大于滚动视图的框架大小。

于 2013-11-13T01:43:52.603 回答
0

使用viewDidAppear而不是viewDidLoad. 它肯定会奏效。

(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    [self.scrollView setContentSize:CGSizeMake(...)];
}
于 2013-11-14T16:42:53.007 回答
0

您的内容大小对于滚动视图是正确的,但请检查情节提要中视图控制器的大小。将视图控制器的模拟大小从自由设置为固定。我认为它会帮助你解决你的问题。

于 2016-08-22T11:14:01.427 回答