如何将scrollView向下移动44x以为NavBar腾出空间

时间:2012-10-05 18:26:39

标签: objective-c ios uiscrollview navbar

我使用以下代码创建我的scrollview。我想将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;

任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:1)

不能只在界面构建器中添加滚动视图作为插座,将其放在导航栏下方。

在.h

中声明滚动视图 在ViewDidLoad

下的.m中

[scroll setScrollEnabled:YES];
[scroll setContentSize: CGSizeMake(320, 1000)]; ////or whatever size you want here

答案 1 :(得分:1)

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

为其创建框架
CGRect scrollFrame = CGRectInset(self.view.bounds, 0, navbar.bounds.size.height)

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

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

答案 2 :(得分:1)

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

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

:)

这适用于iPod和iphone View,但这将使滚动开始于44px