2

所以我看过很多其他的帖子,我想我几乎都试过了。我不希望这是重复的,但我无法解决我的问题。我有这样的设置: 在此处输入图像描述

当我到达我的滚动视图控制器时,我可以很好地翻页,但我也可以垂直移动图片。我认为这与 NavigationBar 强制向下滚动 ScrollView 框架有关,但仍将框架设置为全屏大小。如何防止滚动视图视图控制器上的任何垂直滚动?我的 .m 如下:

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.navigationController.navigationBarHidden = NO;

i = 0;

_PhotoBundle = [[NSBundle mainBundle] pathsForResourcesOfType:@".jpg"inDirectory:@"Dog_Images"];

_PhotoArray = [[NSMutableArray alloc] initWithCapacity:_PhotoBundle.count];
for (NSString* path in _PhotoBundle)
{
    [_PhotoArray addObject:[UIImage imageWithContentsOfFile:path]];
}
for (int x = 0; x < _PhotoArray.count; x++)
{
    CGRect frame;
    frame.origin.x = self.mainScroll.frame.size.width * x;
    frame.origin.y = 0;
    frame.size = self.mainScroll.frame.size;

    UIImage *nextImg = [[UIImage alloc] init];
    nextImg = [_PhotoArray objectAtIndex:x];

    UIImageView *nextIV = [[UIImageView alloc] initWithFrame:frame];
    [nextIV setImage:nextImg];

    [self.mainScroll addSubview:nextIV];
    //NSLog(@"Pass %d", x);
}

self.mainScroll.contentSize = CGSizeMake(self.mainScroll.frame.size.width * _PhotoArray.count, self.mainScroll.frame.size.height);

}

非常感谢你!!

4

2 回答 2

6

所以我找到了一个完美解释它的帖子:

如何在 UIScrollView 中仅禁用垂直滚动?

当我改变我的

CGSizeMake(self.mainScroll.frame.size.width * _PhotoArray.count, self.mainScroll.frame.size.height);

CGSizeMake(self.mainScroll.frame.size.width * _PhotoArray.count, 1.0);

它使 contentSize 从大于界限...我读过的东西,但没有完全理解。我希望这可以帮助其他陷入困境的人......

于 2012-11-01T20:28:38.143 回答
1

UIScrollViewcontentSize只有当它的 -设置大于它的框架时才会滚动它的内容。因此,当您设置self.mainScroll.contentSize它时contentSize.height,它的框架更多。

在使用它的类之前,请尝试至少阅读 Apple 的文档。这很无聊。但是薪水可以弥补所有无聊的东西。

顺便一提。您错误地使用 UIScrollView 来显示 UIImageView 对象。尝试观看 Apple WWDC 会话(可以从 iTunes 下载) - 关于如何仅使用三个 UIImageView 对象来绘制无尽的 UIScrollView 分页,有两到三个会话

Apple 的文档UIScrollView

于 2012-11-01T18:23:27.970 回答