我在我的应用程序故事板中的一个场景中包含了一个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);
}
这是我的视图层次结构:
故事板中的场景:
模拟器中的滚动条显示但不能正常工作:
有人可以告诉我哪里出错了吗?感谢。
答案 0 :(得分:3)
在iOS中为Storyboards设置ScrollView可能会有点混乱。在我的问题中设置ScrollView是正确的,但是很少有错误导致程序运行与预期不同。
首先,我发现的修复是取消选中File Inspector中的Set Autolayout。第二个是更正视图层次结构。为了测试我的修复,我将场景的内容更改为更简单的内容:使用View,ScrollView,嵌套视图和两个按钮。这是新的View层次结构:
ScrollView位于主视图之后的View层次结构之上。然后,我放置另一个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 tutorial修复了我的程序。希望这会有所帮助。
答案 1 :(得分:1)
我猜,setContentSize:在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);
}
答案 2 :(得分:0)
看来滚动视图已超出屏幕。您是否将滚动视图的autoResizesSubviews
属性设置为true,将autoresizingMask
设置为UIViewAutoresizingFlexibleWidth| UIViewAutoresizingFlexibleWidth
。如果您使用auto layout
,请设置适当的约束。
答案 3 :(得分:0)
可滚动内容应该是scrollview的子视图。您需要先检查视图的层次结构。之后,您可以使用下面的代码来比较ViewController中的视图大小和内容大小。
- (void)viewWillLayoutSubviews
{
NSLog(@"scrollview size : %@", NSStringFromCGSize(self.scrollView.frame.size));
NSLog(@"content size : %@", NSStringFromCGSize(self.scrollView.contentSize));
}
内容大小应大于滚动视图的帧大小。
答案 4 :(得分:0)
使用viewDidAppear
代替viewDidLoad
。它肯定会奏效。
(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self.scrollView setContentSize:CGSizeMake(...)];
}
答案 5 :(得分:0)
您的内容大小对于滚动视图是正确的,但请检查故事板中视图控制器的大小。 将视图控制器的模拟大小从自由设置为固定。 我认为它可以帮助您解决问题。