0

我正在使用以下代码来创建我的滚动视图。我想将 scrollView 向下移动 44px 以为我的导航栏腾出空间。

scroll = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
scroll.backgroundColor = [UIColor clearColor];
scroll.delegate = self;
image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Menu.png"]];
scroll.contentSize = image.frame.size;
[scroll addSubview:image];
scroll.minimumZoomScale = scroll.frame.size.width / image.frame.size.width;
scroll.maximumZoomScale = 2.0;
[scroll setZoomScale:scroll.minimumZoomScale];

UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];

[doubleTap setNumberOfTapsRequired:2];

[scroll addGestureRecognizer:doubleTap];
self.view = scroll;

任何帮助表示赞赏。

4

3 回答 3

1

你不能只是在界面构建器中添加一个滚动视图作为出口,把它放在你的导航栏下面。

在 .h 中声明滚动视图

在 ViewDidLoad 下的 .m

[scroll setScrollEnabled:YES];
[scroll setContentSize: CGSizeMake(320, 1000)]; ////or whatever size you want here
于 2012-10-05T18:38:24.390 回答
1

您可能希望使用不同的框架对其进行初始化......但这取决于创建此导航栏的位置/方式。如果你有一个视图控制器,并且这些都是视图控制器视图的子视图,那么你应该在 viewDidLoad 中创建对象,然后只需先创建导航栏,使用 self.view.bounds 获取初始化宽度。我假设你想把 UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin 在这里作为 autoResizingMask。然后,如果滚动视图是导航栏下方视图的其余部分,则可以使用为其创建框架

CGRect scrollFrame = CGRectInset(self.view.bounds, 0, navbar.bounds.size.height)

放一个 UIViewAutoresizingFlexibleWidth 的 autoresizingMask | 滚动视图上的 UIViewAutoResizingFlexibleHeight。

如果您以不同的位置/方式创建视图,那么其中一些可能需要修改。我假设您的视图是顶部的导航栏,x 像素高(在这种情况下为 44,但在设置滚动视图框架的上下文中并不重要)。然后是填充视图其余部分的滚动视图。

于 2012-10-05T18:48:36.477 回答
1

您的代码是正确的,要手动创建一个框架:

scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0,44,320,480)];

:)

这适用于 iPod 和 iphone View 但这会让滚动从 44px 开始

于 2012-10-05T19:43:42.830 回答