在我的youtube克隆应用中,我有一个名为menuBar的UIView,如下图所示。我想实现与youtube应用程序相同的行为。这是当用户向上滚动在collectionView导航栏将翻译向上和隐藏。标签名称UIView也是一样。我的实现如下所示。
但现在的问题是,导航栏被隐藏后,菜单栏移动到安全区域。我不知道如何让它滚动到这样它被导航栏隐藏。目前这个菜单条。top被限制为safeAreaLayout。因此,如果导航栏被隐藏,它将位于屏幕顶部。如何将它与导航条一起移出屏幕?
如果我的解释不清楚,请看下面的gif。
我的克隆程序
想要的行为在真正的youtube应用程序
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = UIColor.systemBackgroundColor;
[self setupMenuBar];
}
- (void)setupMenuBar {
MenuBar *menuBar = [MenuBar new];
menuBar.translatesAutoresizingMaskIntoConstraints = false;
self.navigationController.hidesBarsOnSwipe = true;
[self.view addSubview:menuBar];
// set constraints
UILayoutGuide *g = [self.view safeAreaLayoutGuide];
[NSLayoutConstraint activateConstraints:@[
[menuBar.leadingAnchor constraintEqualToAnchor:g.leadingAnchor constant:0.0],
[menuBar.trailingAnchor constraintEqualToAnchor:g.trailingAnchor constant:0.0],
[menuBar.topAnchor constraintEqualToAnchor:g.topAnchor constant:4.0],
[menuBar.heightAnchor constraintEqualToConstant:42.0],
]];
}