iPhone上的透明导航栏

时间:2010-10-02 10:24:57

标签: iphone objective-c uiscrollview ios4

我正在尝试在Scrollview上显示透明的UINavigationBar

这是我写过的代码的实际结果......

alt text

因为我希望视图显示如下图所示,这是在我稍微滚动图像后发生的。

alt text

代码:

 - (void) loadView {
    CGRect pagingScrollViewFrame = [self frameForPagingScrollView];

    pagingScrollView = [[UIScrollView alloc] initWithFrame:pagingScrollViewFrame];
    pagingScrollView.pagingEnabled = YES;
    pagingScrollView.backgroundColor = [UIColor blackColor];
    pagingScrollView.showsVerticalScrollIndicator = NO;
    pagingScrollView.showsHorizontalScrollIndicator = NO;
    pagingScrollView.contentSize = CGSizeMake(pagingScrollViewFrame.size.width * [self imageCount], 
                                              pagingScrollViewFrame.size.height);
    pagingScrollView.delegate = self;

    self.wantsFullScreenLayout = YES;
    pagingScrollView.scrollsToTop = YES;
    self.view = pagingScrollView;
}

问题是如何在没有用户交互的情况下按预期加载视图? 任何建议或帮助表示赞赏..

编辑:我正在完全从CODE创建视图

9 个答案:

答案 0 :(得分:4)

看起来你正试图在不在IB中的代码中这样做。如果是这样,您必须将代码放在Application Delegate的viewDidLoad中(例如MyProgramAppDeligate类或其他)。如果您想在某些特定视图中使用它,请将其放在viewDidLoad类/子类的UINavigationController中。

这是否满足您的要求?

答案 1 :(得分:4)

self.navigationController.navigationBar.translucent = YES;
self.navigationController.navigationBar.tintColor = [UIColor blackColor];

让您的状态栏保持半透明状态。

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent animated:YES]; 
[self setWantsFullScreenLayout:YES];

我在willWillAppear中有这个,我在viewWillDisappear中重置它。

答案 2 :(得分:0)

你必须设置

self.navigationController.navigationBar.translucent = YES;

一旦你这样做,0,0坐标就在你的导航栏后面而不是在它下方,你的视图会在栏后面移动。

答案 3 :(得分:0)

IB与您的代码之间可能存在冲突。我会在viewDidLoad方法中添加Ortwin建议的代码行,然后仔细检查你是否已将导航栏设置为IB中的半透明。

答案 4 :(得分:0)

您发布的代码与导航栏的不透明度无关。显示您在何处设置视图组件的配置。在那里你可以设置导航栏的alpha。或者,如果您使用的是笔尖,只需在IB中设置alpha。

答案 5 :(得分:0)

由于您说用户(您)稍微滚动图像后它可以正常工作,问题可能是UINavigationBar的{​​{1}}方法在{{1}之后未被调用已加载。

建议:加载视图后,您是否可以在导航栏上明确调用drawRect:

答案 6 :(得分:0)

在将导航栏设置为透明后,您是否尝试设置Y原点为0的滚动视图的框架?

编辑:我的意思是,你没有说明代码中使用的框架是什么。

答案 7 :(得分:0)

在viewDidLoad中,尝试将原点向上移动32像素,并将高度增加32像素:

pagingScrollView.frame = CGRectMake(pagingScrollView.frame.origin.x, pagingScrollView.frame.origin.y-32, pagingScrollView.frame.size.width, pagingScrollView.frame.size.height+32);

答案 8 :(得分:0)

viewWillAppear中将内容滚动到正确的位置。

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    UIScrollView *scrollView = (UIScrollView *)self.view;
    [scrollView setContentSize:CGSizeMake(320,568)];
    [scrollView scrollRectToVisible:CGRectMake(0, 548, 320, 20) animated:NO];
}
相关问题