我正在尝试在Scrollview上显示透明的UINavigationBar
。
这是我写过的代码的实际结果......
因为我希望视图显示如下图所示,这是在我稍微滚动图像后发生的。
代码:
- (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创建视图
答案 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];
}